Decorator patter and initial build

This commit is contained in:
Bassem Girgis
2018-03-30 11:00:14 -05:00
parent 43c4edced5
commit 1806d6a1f2
30 changed files with 2857 additions and 0 deletions

104
.clang-format Normal file
View File

@@ -0,0 +1,104 @@
Language: Cpp
# BasedOnStyle: Google
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: TopLevelDefinitions
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BreakBeforeBraces : Custom
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: true
BeforeElse: true
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeInheritanceComma: true
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IncludeCategories:
- Regex: '^<.*\.h>'
Priority: 1
- Regex: '^<.*'
Priority: 2
- Regex: '.*'
Priority: 3
IncludeIsMainRegex: '([-_](test|unittest))?$'
IndentCaseLabels: false
IndentWidth: 2
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: false
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Left
ReflowComments: true
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: true
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 2
UseTab: Never

411
.clang-tidy Normal file
View File

@@ -0,0 +1,411 @@
---
Checks: 'clang-diagnostic-*,clang-analyzer-*,*'
WarningsAsErrors: ''
HeaderFilterRegex: ''
AnalyzeTemporaryDtors: false
User: brgirgis
CheckOptions:
- key: cert-dcl59-cpp.HeaderFileExtensions
value: h,hh,hpp,hxx
- key: cert-err09-cpp.CheckThrowTemporaries
value: '1'
- key: cert-err61-cpp.CheckThrowTemporaries
value: '1'
- key: cert-oop11-cpp.IncludeStyle
value: llvm
- key: cppcoreguidelines-pro-bounds-constant-array-index.GslHeader
value: ''
- key: cppcoreguidelines-pro-bounds-constant-array-index.IncludeStyle
value: '0'
- key: cppcoreguidelines-pro-type-member-init.IgnoreArrays
value: '0'
- key: google-build-namespaces.HeaderFileExtensions
value: h,hh,hpp,hxx
- key: google-global-names-in-headers.HeaderFileExtensions
value: h
- key: google-readability-braces-around-statements.ShortStatementLines
value: '1'
- key: google-readability-function-size.BranchThreshold
value: '100'
- key: google-readability-function-size.LineThreshold
value: '300'
- key: google-readability-function-size.StatementThreshold
value: '5'
- key: google-readability-namespace-comments.ShortNamespaceLines
value: '10'
- key: google-readability-namespace-comments.SpacesBeforeComments
value: '2'
- key: google-runtime-int.SignedTypePrefix
value: int
- key: google-runtime-int.TypeSuffix
value: ''
- key: google-runtime-int.UnsignedTypePrefix
value: uint
- key: google-runtime-references.WhiteListTypes
value: ''
- key: llvm-header-guard.HeaderFileExtensions
value: ',h,hh,hpp,hxx'
- key: llvm-namespace-comment.ShortNamespaceLines
value: '1'
- key: llvm-namespace-comment.SpacesBeforeComments
value: '2'
- key: misc-argument-comment.StrictMode
value: '0'
- key: misc-assert-side-effect.AssertMacros
value: assert
- key: misc-assert-side-effect.CheckFunctionCalls
value: '0'
- key: misc-dangling-handle.HandleClasses
value: 'std::basic_string_view;std::experimental::basic_string_view'
- key: misc-definitions-in-headers.HeaderFileExtensions
value: ',h,hh,hpp,hxx'
- key: misc-definitions-in-headers.UseHeaderFileExtension
value: '0'
- key: misc-misplaced-widening-cast.CheckImplicitCasts
value: '1'
- key: misc-move-constructor-init.IncludeStyle
value: llvm
- key: misc-sizeof-expression.WarnOnSizeOfCompareToConstant
value: '1'
- key: misc-sizeof-expression.WarnOnSizeOfConstant
value: '1'
- key: misc-sizeof-expression.WarnOnSizeOfThis
value: '1'
- key: misc-string-constructor.LargeLengthThreshold
value: '8388608'
- key: misc-string-constructor.WarnOnLargeLength
value: '1'
- key: misc-suspicious-enum-usage.StrictMode
value: '0'
- key: misc-suspicious-missing-comma.MaxConcatenatedTokens
value: '5'
- key: misc-suspicious-missing-comma.RatioThreshold
value: '0.200000'
- key: misc-suspicious-missing-comma.SizeThreshold
value: '5'
- key: misc-suspicious-string-compare.StringCompareLikeFunctions
value: ''
- key: misc-suspicious-string-compare.WarnOnImplicitComparison
value: '1'
- key: misc-suspicious-string-compare.WarnOnLogicalNotComparison
value: '0'
- key: misc-throw-by-value-catch-by-reference.CheckThrowTemporaries
value: '1'
- key: modernize-loop-convert.MaxCopySize
value: '16'
- key: modernize-loop-convert.MinConfidence
value: reasonable
- key: modernize-loop-convert.NamingStyle
value: CamelCase
- key: modernize-pass-by-value.IncludeStyle
value: llvm
- key: modernize-pass-by-value.ValuesOnly
value: '0'
- key: modernize-replace-auto-ptr.IncludeStyle
value: llvm
- key: modernize-use-auto.RemoveStars
value: '0'
- key: modernize-use-default-member-init.UseAssignment
value: '0'
- key: modernize-use-emplace.ContainersWithPushBack
value: '::std::vector;::std::list;::std::deque'
- key: modernize-use-emplace.SmartPointers
value: '::std::shared_ptr;::std::unique_ptr;::std::auto_ptr;::std::weak_ptr'
- key: modernize-use-nullptr.NullMacros
value: 'NULL'
- key: modernize-use-transparent-functors.SafeMode
value: '0'
- key: performance-faster-string-find.StringLikeClasses
value: 'std::basic_string'
- key: performance-for-range-copy.WarnOnAllAutoCopies
value: '0'
- key: performance-inefficient-string-concatenation.StrictMode
value: '0'
- key: performance-type-promotion-in-math-fn.IncludeStyle
value: llvm
- key: performance-unnecessary-value-param.IncludeStyle
value: llvm
- key: readability-braces-around-statements.ShortStatementLines
value: '0'
- key: readability-function-size.BranchThreshold
value: '100'
- key: readability-function-size.LineThreshold
value: '300'
- key: readability-function-size.StatementThreshold
value: '5'
- key: readability-identifier-naming.AbstractClassCase
value: CamelCase
- key: readability-identifier-naming.AbstractClassPrefix
value: 'I'
- key: readability-identifier-naming.AbstractClassSuffix
value: ''
- key: readability-identifier-naming.ClassCase
value: CamelCase
- key: readability-identifier-naming.ClassConstantCase
value: aNy_CasE
- key: readability-identifier-naming.ClassConstantPrefix
value: ''
- key: readability-identifier-naming.ClassConstantSuffix
value: ''
- key: readability-identifier-naming.ClassMemberCase
value: CamelCase
- key: readability-identifier-naming.ClassMemberPrefix
value: ''
- key: readability-identifier-naming.ClassMemberSuffix
value: ''
- key: readability-identifier-naming.ClassMethodCase
value: camelBack
- key: readability-identifier-naming.ClassMethodPrefix
value: ''
- key: readability-identifier-naming.ClassMethodSuffix
value: ''
- key: readability-identifier-naming.ClassPrefix
value: ''
- key: readability-identifier-naming.ClassSuffix
value: ''
- key: readability-identifier-naming.ConstantCase
value: aNy_CasE
- key: readability-identifier-naming.ConstantMemberCase
value: camelBack
- key: readability-identifier-naming.ConstantMemberPrefix
value: ''
- key: readability-identifier-naming.ConstantMemberSuffix
value: ''
- key: readability-identifier-naming.ConstantParameterCase
value: camelBack
- key: readability-identifier-naming.ConstantParameterPrefix
value: ''
- key: readability-identifier-naming.ConstantParameterSuffix
value: ''
- key: readability-identifier-naming.ConstantPrefix
value: ''
- key: readability-identifier-naming.ConstantSuffix
value: ''
- key: readability-identifier-naming.ConstexprFunctionCase
value: camelBack
- key: readability-identifier-naming.ConstexprFunctionPrefix
value: ''
- key: readability-identifier-naming.ConstexprFunctionSuffix
value: ''
- key: readability-identifier-naming.ConstexprMethodCase
value: camelBack
- key: readability-identifier-naming.ConstexprMethodPrefix
value: ''
- key: readability-identifier-naming.ConstexprMethodSuffix
value: ''
- key: readability-identifier-naming.ConstexprVariableCase
value: camelBack
- key: readability-identifier-naming.ConstexprVariablePrefix
value: ''
- key: readability-identifier-naming.ConstexprVariableSuffix
value: ''
- key: readability-identifier-naming.EnumCase
value: aNy_CasE
- key: readability-identifier-naming.EnumConstantCase
value: aNy_CasE
- key: readability-identifier-naming.EnumConstantPrefix
value: ''
- key: readability-identifier-naming.EnumConstantSuffix
value: ''
- key: readability-identifier-naming.EnumPrefix
value: ''
- key: readability-identifier-naming.EnumSuffix
value: ''
- key: readability-identifier-naming.FunctionCase
value: camelBack
- key: readability-identifier-naming.FunctionPrefix
value: ''
- key: readability-identifier-naming.FunctionSuffix
value: ''
- key: readability-identifier-naming.GlobalConstantCase
value: camelBack
- key: readability-identifier-naming.GlobalConstantPrefix
value: ''
- key: readability-identifier-naming.GlobalConstantSuffix
value: ''
- key: readability-identifier-naming.GlobalFunctionCase
value: camelBack
- key: readability-identifier-naming.GlobalFunctionPrefix
value: ''
- key: readability-identifier-naming.GlobalFunctionSuffix
value: ''
- key: readability-identifier-naming.GlobalVariableCase
value: lower_case
- key: readability-identifier-naming.GlobalVariablePrefix
value: ''
- key: readability-identifier-naming.GlobalVariableSuffix
value: ''
- key: readability-identifier-naming.IgnoreFailedSplit
value: '0'
- key: readability-identifier-naming.InlineNamespaceCase
value: lower_case
- key: readability-identifier-naming.InlineNamespacePrefix
value: ''
- key: readability-identifier-naming.InlineNamespaceSuffix
value: ''
- key: readability-identifier-naming.LocalConstantCase
value: camelBack
- key: readability-identifier-naming.LocalConstantPrefix
value: ''
- key: readability-identifier-naming.LocalConstantSuffix
value: ''
- key: readability-identifier-naming.LocalVariableCase
value: camelBack
- key: readability-identifier-naming.LocalVariablePrefix
value: ''
- key: readability-identifier-naming.LocalVariableSuffix
value: ''
- key: readability-identifier-naming.MacroDefinitionCase
value: UPPER_CASE
- key: readability-identifier-naming.MacroDefinitionPrefix
value: ''
- key: readability-identifier-naming.MacroDefinitionSuffix
value: ''
- key: readability-identifier-naming.MemberCase
value: camelBack
- key: readability-identifier-naming.MemberPrefix
value: ''
- key: readability-identifier-naming.MemberSuffix
value: ''
- key: readability-identifier-naming.MethodCase
value: camelBack
- key: readability-identifier-naming.MethodPrefix
value: ''
- key: readability-identifier-naming.MethodSuffix
value: ''
- key: readability-identifier-naming.NamespaceCase
value: lower_case
- key: readability-identifier-naming.NamespacePrefix
value: ''
- key: readability-identifier-naming.NamespaceSuffix
value: ''
- key: readability-identifier-naming.ParameterCase
value: camelBack
- key: readability-identifier-naming.ParameterPackCase
value: camelBack
- key: readability-identifier-naming.ParameterPackPrefix
value: ''
- key: readability-identifier-naming.ParameterPackSuffix
value: ''
- key: readability-identifier-naming.ParameterPrefix
value: ''
- key: readability-identifier-naming.ParameterSuffix
value: ''
- key: readability-identifier-naming.PrivateMemberCase
value: camelBack
- key: readability-identifier-naming.PrivateMemberPrefix
value: 'm_'
- key: readability-identifier-naming.PrivateMemberSuffix
value: ''
- key: readability-identifier-naming.PrivateMethodCase
value: camelBack
- key: readability-identifier-naming.PrivateMethodPrefix
value: ''
- key: readability-identifier-naming.PrivateMethodSuffix
value: ''
- key: readability-identifier-naming.ProtectedMemberCase
value: camelBack
- key: readability-identifier-naming.ProtectedMemberPrefix
value: ''
- key: readability-identifier-naming.ProtectedMemberSuffix
value: ''
- key: readability-identifier-naming.ProtectedMethodCase
value: camelBack
- key: readability-identifier-naming.ProtectedMethodPrefix
value: ''
- key: readability-identifier-naming.ProtectedMethodSuffix
value: ''
- key: readability-identifier-naming.PublicMemberCase
value: camelBack
- key: readability-identifier-naming.PublicMemberPrefix
value: ''
- key: readability-identifier-naming.PublicMemberSuffix
value: ''
- key: readability-identifier-naming.PublicMethodCase
value: camelBack
- key: readability-identifier-naming.PublicMethodPrefix
value: ''
- key: readability-identifier-naming.PublicMethodSuffix
value: ''
- key: readability-identifier-naming.StaticConstantCase
value: camelBack
- key: readability-identifier-naming.StaticConstantPrefix
value: ''
- key: readability-identifier-naming.StaticConstantSuffix
value: ''
- key: readability-identifier-naming.StaticVariableCase
value: camelBack
- key: readability-identifier-naming.StaticVariablePrefix
value: ''
- key: readability-identifier-naming.StaticVariableSuffix
value: ''
- key: readability-identifier-naming.StructCase
value: CamelCase
- key: readability-identifier-naming.StructPrefix
value: ''
- key: readability-identifier-naming.StructSuffix
value: ''
- key: readability-identifier-naming.TemplateParameterCase
value: CamelCase
- key: readability-identifier-naming.TemplateParameterPrefix
value: ''
- key: readability-identifier-naming.TemplateParameterSuffix
value: ''
- key: readability-identifier-naming.TemplateTemplateParameterCase
value: CamelCase
- key: readability-identifier-naming.TemplateTemplateParameterPrefix
value: ''
- key: readability-identifier-naming.TemplateTemplateParameterSuffix
value: ''
- key: readability-identifier-naming.TypeAliasCase
value: CamelCase
- key: readability-identifier-naming.TypeAliasPrefix
value: ''
- key: readability-identifier-naming.TypeAliasSuffix
value: ''
- key: readability-identifier-naming.TypeTemplateParameterCase
value: CamelCase
- key: readability-identifier-naming.TypeTemplateParameterPrefix
value: ''
- key: readability-identifier-naming.TypeTemplateParameterSuffix
value: ''
- key: readability-identifier-naming.TypedefCase
value: CamelCase
- key: readability-identifier-naming.TypedefPrefix
value: ''
- key: readability-identifier-naming.TypedefSuffix
value: ''
- key: readability-identifier-naming.UnionCase
value: aNy_CasE
- key: readability-identifier-naming.UnionPrefix
value: ''
- key: readability-identifier-naming.UnionSuffix
value: ''
- key: readability-identifier-naming.ValueTemplateParameterCase
value: CamelCase
- key: readability-identifier-naming.ValueTemplateParameterPrefix
value: ''
- key: readability-identifier-naming.ValueTemplateParameterSuffix
value: ''
- key: readability-identifier-naming.VariableCase
value: camelBack
- key: readability-identifier-naming.VariablePrefix
value: ''
- key: readability-identifier-naming.VariableSuffix
value: ''
- key: readability-identifier-naming.VirtualMethodCase
value: camelBack
- key: readability-identifier-naming.VirtualMethodPrefix
value: ''
- key: readability-identifier-naming.VirtualMethodSuffix
value: ''
- key: readability-implicit-bool-cast.AllowConditionalIntegerCasts
value: '0'
- key: readability-implicit-bool-cast.AllowConditionalPointerCasts
value: '0'
- key: readability-simplify-boolean-expr.ChainedConditionalAssignment
value: '0'
- key: readability-simplify-boolean-expr.ChainedConditionalReturn
value: '0'
...

124
.cproject Normal file
View File

@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="cdt.managedbuild.config.gnu.cross.exe.debug.1234347164">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.cross.exe.debug.1234347164" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.debug.1234347164" name="Debug" parent="cdt.managedbuild.config.gnu.cross.exe.debug">
<folderInfo id="cdt.managedbuild.config.gnu.cross.exe.debug.1234347164." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.debug.895528174" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.debug">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.1463199201" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
<builder buildPath="${workspace_loc:/CPP-Patterns}/src" cleanBuildTarget="-c" command="scons" id="cdt.managedbuild.builder.gnu.cross.1680930682" incrementalBuildTarget="" keepEnvironmentInBuildfile="true" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
<tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.1059078889" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1189450053" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
<option id="gnu.c.compiler.option.debugging.level.301091150" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.2001659488" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.2072575602" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
<option id="gnu.cpp.compiler.option.optimization.level.2060820791" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
<option id="gnu.cpp.compiler.option.debugging.level.1055708519" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
<option id="gnu.cpp.compiler.option.dialect.std.982026885" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.c++1y" valueType="enumerated"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.993288318" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.c.linker.437342475" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1591802863" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker">
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.598199298" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.archiver.1078306475" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
<tool id="cdt.managedbuild.tool.gnu.cross.assembler.1643316290" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.551258156" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
<cconfiguration id="cdt.managedbuild.config.gnu.cross.exe.release.1243951975">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.cross.exe.release.1243951975" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.1243951975" name="Release" parent="cdt.managedbuild.config.gnu.cross.exe.release">
<folderInfo id="cdt.managedbuild.config.gnu.cross.exe.release.1243951975." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.release.2111437574" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.release">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.1748389627" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
<builder buildPath="${workspace_loc:/CPP-Patterns}/src" cleanBuildTarget="DEBUG=0 -c" command="scons" id="cdt.managedbuild.builder.gnu.cross.162542164" incrementalBuildTarget="DEBUG=0" keepEnvironmentInBuildfile="true" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
<tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.346338174" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.526955837" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
<option id="gnu.c.compiler.option.debugging.level.1753131718" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.110435108" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1248793934" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
<option id="gnu.cpp.compiler.option.optimization.level.837851766" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
<option id="gnu.cpp.compiler.option.debugging.level.2110508446" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.2011583782" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.c.linker.378980796" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.98989619" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker">
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1223375342" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.archiver.1339328424" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
<tool id="cdt.managedbuild.tool.gnu.cross.assembler.1140002719" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1405680098" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="CPP-Patterns.cdt.managedbuild.target.gnu.cross.exe.1178469746" name="Executable" projectType="cdt.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.debug.1234347164;cdt.managedbuild.config.gnu.cross.exe.debug.1234347164.;cdt.managedbuild.tool.gnu.cross.cpp.compiler.2072575602;cdt.managedbuild.tool.gnu.cpp.compiler.input.993288318">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.release.1243951975;cdt.managedbuild.config.gnu.cross.exe.release.1243951975.;cdt.managedbuild.tool.gnu.cross.c.compiler.346338174;cdt.managedbuild.tool.gnu.c.compiler.input.110435108">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.release.1243951975;cdt.managedbuild.config.gnu.cross.exe.release.1243951975.;cdt.managedbuild.tool.gnu.cross.cpp.compiler.1248793934;cdt.managedbuild.tool.gnu.cpp.compiler.input.2011583782">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.debug.1234347164;cdt.managedbuild.config.gnu.cross.exe.debug.1234347164.;cdt.managedbuild.tool.gnu.cross.c.compiler.1059078889;cdt.managedbuild.tool.gnu.c.compiler.input.2001659488">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Debug">
<resource resourceType="PROJECT" workspacePath="/CPP-Patterns"/>
</configuration>
<configuration configurationName="Release">
<resource resourceType="PROJECT" workspacePath="/CPP-Patterns"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
</cproject>

9
.gitignore vendored
View File

@@ -30,3 +30,12 @@
*.exe
*.out
*.app
build/
install/
.test/
*.dblite
*.pdb
*.out

33
.project Normal file
View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>CPP-Patterns</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.python.pydev.PyDevBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>org.python.pydev.pythonNature</nature>
</natures>
</projectDescription>

8
.pydevproject Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?><pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 3.6</pydev_property>
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
<path>/${PROJECT_DIR_NAME}/src/site_scons</path>
</pydev_pathproperty>
</pydev_project>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="cdt.managedbuild.config.gnu.cross.exe.debug.1234347164" name="Debug">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="605751381233419494" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
<configuration id="cdt.managedbuild.config.gnu.cross.exe.release.1243951975" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="605751780412865290" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
</project>

View File

@@ -0,0 +1,201 @@
eclipse.preferences.version=1
org.eclipse.cdt.codan.checkers.errnoreturn=Warning
org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false}
org.eclipse.cdt.codan.checkers.errreturnvalue=Error
org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"}
org.eclipse.cdt.codan.checkers.nocommentinside=-Error
org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"}
org.eclipse.cdt.codan.checkers.nolinecomment=-Error
org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"}
org.eclipse.cdt.codan.checkers.noreturn=Error
org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false}
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"}
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"}
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"}
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"}
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false}
org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()}
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"}
org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning
org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true}
org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error
org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"}
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"}
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"}
org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error
org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"}
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"}
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"}
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"}
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"}
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"}
org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error
org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"}
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"}
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"}
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"}
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"}
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()}
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false}
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false}
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"}
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true}
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true}
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")}
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"}
org.wangzw.plugin.cppstyle.cpplint.build.c++11=Error
org.wangzw.plugin.cppstyle.cpplint.build.c++11.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.categorized=Error
org.wangzw.plugin.cppstyle.cpplint.build.categorized.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.deprecated=Error
org.wangzw.plugin.cppstyle.cpplint.build.deprecated.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.endif_comment=Error
org.wangzw.plugin.cppstyle.cpplint.build.endif_comment.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.explicit_make_pair=Error
org.wangzw.plugin.cppstyle.cpplint.build.explicit_make_pair.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.forward_decl=Error
org.wangzw.plugin.cppstyle.cpplint.build.forward_decl.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.header_guard=Error
org.wangzw.plugin.cppstyle.cpplint.build.header_guard.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.include=Error
org.wangzw.plugin.cppstyle.cpplint.build.include.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.include_alpha=Error
org.wangzw.plugin.cppstyle.cpplint.build.include_alpha.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.include_order=Error
org.wangzw.plugin.cppstyle.cpplint.build.include_order.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.include_what_you_use=Error
org.wangzw.plugin.cppstyle.cpplint.build.include_what_you_use.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.namespaces=Error
org.wangzw.plugin.cppstyle.cpplint.build.namespaces.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.printf_format=Error
org.wangzw.plugin.cppstyle.cpplint.build.printf_format.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.build.storage_class=Error
org.wangzw.plugin.cppstyle.cpplint.build.storage_class.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.legal.copyright=Error
org.wangzw.plugin.cppstyle.cpplint.legal.copyright.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.alt_tokens=Error
org.wangzw.plugin.cppstyle.cpplint.readability.alt_tokens.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.braces=Error
org.wangzw.plugin.cppstyle.cpplint.readability.braces.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.casting=Error
org.wangzw.plugin.cppstyle.cpplint.readability.casting.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.check=Error
org.wangzw.plugin.cppstyle.cpplint.readability.check.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.constructors=Error
org.wangzw.plugin.cppstyle.cpplint.readability.constructors.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.fn_size=Error
org.wangzw.plugin.cppstyle.cpplint.readability.fn_size.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.function=Error
org.wangzw.plugin.cppstyle.cpplint.readability.function.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.inheritance=Error
org.wangzw.plugin.cppstyle.cpplint.readability.inheritance.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.multiline_comment=Error
org.wangzw.plugin.cppstyle.cpplint.readability.multiline_comment.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.multiline_string=Error
org.wangzw.plugin.cppstyle.cpplint.readability.multiline_string.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.namespace=Error
org.wangzw.plugin.cppstyle.cpplint.readability.namespace.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.nolint=Error
org.wangzw.plugin.cppstyle.cpplint.readability.nolint.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.nul=Error
org.wangzw.plugin.cppstyle.cpplint.readability.nul.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.strings=Error
org.wangzw.plugin.cppstyle.cpplint.readability.strings.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.todo=Error
org.wangzw.plugin.cppstyle.cpplint.readability.todo.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.readability.utf8=Error
org.wangzw.plugin.cppstyle.cpplint.readability.utf8.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.arrays=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.arrays.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.casting=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.casting.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.explicit=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.explicit.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.indentation_namespace=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.indentation_namespace.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.init=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.init.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.int=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.int.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.invalid_increment=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.invalid_increment.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.member_string_references=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.member_string_references.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.memset=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.memset.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.operator=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.operator.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.printf=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.printf.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.printf_format=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.printf_format.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.references=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.references.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.string=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.string.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.threadsafe_fn=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.threadsafe_fn.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.runtime.vlog=Error
org.wangzw.plugin.cppstyle.cpplint.runtime.vlog.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.blank_line=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.blank_line.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.braces=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.braces.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.comma=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.comma.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.comments=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.comments.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.empty_conditional_body=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.empty_conditional_body.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.empty_loop_body=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.empty_loop_body.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.end_of_line=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.end_of_line.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.ending_newline=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.ending_newline.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.forcolon=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.forcolon.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.indent=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.indent.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.line_length=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.line_length.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.newline=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.newline.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.operators=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.operators.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.parens=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.parens.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.semicolon=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.semicolon.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.tab=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.tab.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
org.wangzw.plugin.cppstyle.cpplint.whitespace.todo=Error
org.wangzw.plugin.cppstyle.cpplint.whitespace.todo.params={fileScope\=>inclusion\=>("*.cc","*.h","*.cpp","*.cu","*.cuh","*.hpp"),exclusion\=>(),launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>true,RUN_AS_YOU_TYPE\=>false,RUN_ON_DEMAND\=>true},suppression_comment\=>null}

View File

@@ -0,0 +1,165 @@
eclipse.preferences.version=1
org.eclipse.cdt.core.code_formatter=org.eclipse.cdt.core.defaultCodeFormatter
org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=83
org.eclipse.cdt.core.formatter.alignment_for_assignment=16
org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80
org.eclipse.cdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.cdt.core.formatter.alignment_for_compact_if=16
org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=34
org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18
org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=83
org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16
org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=83
org.eclipse.cdt.core.formatter.alignment_for_expression_list=0
org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=18
org.eclipse.cdt.core.formatter.alignment_for_member_access=0
org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=18
org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=83
org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=83
org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.cdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line
org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=end_of_line
org.eclipse.cdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.cdt.core.formatter.comment.line_up_line_comment_in_blocks_on_first_column=false
org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=1
org.eclipse.cdt.core.formatter.comment.never_indent_line_comments_on_first_column=true
org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true
org.eclipse.cdt.core.formatter.compact_else_if=true
org.eclipse.cdt.core.formatter.continuation_indentation=2
org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false
org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=false
org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true
org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false
org.eclipse.cdt.core.formatter.indent_empty_lines=false
org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true
org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=false
org.eclipse.cdt.core.formatter.indentation.size=2
org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert
org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert
org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert
org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert
org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.cdt.core.formatter.join_wrapped_lines=true
org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.cdt.core.formatter.lineSplit=80
org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.cdt.core.formatter.tabulation.char=space
org.eclipse.cdt.core.formatter.tabulation.size=2
org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false

View File

@@ -0,0 +1,3 @@
eclipse.preferences.version=1
formatter_profile=_K&R [built-in] modified
formatter_settings_version=1

217
src/.style.yapf Normal file
View File

@@ -0,0 +1,217 @@
[style]
# Align closing bracket with visual indentation.
align_closing_bracket_with_visual_indent=False
# Allow dictionary keys to exist on multiple lines. For example:
#
# x = {
# ('this is the first element of a tuple',
# 'this is the second element of a tuple'):
# value,
# }
allow_multiline_dictionary_keys=False
# Allow lambdas to be formatted on more than one line.
allow_multiline_lambdas=False
# Allow splits before the dictionary value.
allow_split_before_dict_value=True
# Insert a blank line before a class-level docstring.
blank_line_before_class_docstring=False
# Insert a blank line before a 'def' or 'class' immediately nested
# within another 'def' or 'class'. For example:
#
# class Foo:
# # <------ this blank line
# def method():
# ...
blank_line_before_nested_class_or_def=True
# Do not split consecutive brackets. Only relevant when
# dedent_closing_brackets is set. For example:
#
# call_func_that_takes_a_dict(
# {
# 'key1': 'value1',
# 'key2': 'value2',
# }
# )
#
# would reformat to:
#
# call_func_that_takes_a_dict({
# 'key1': 'value1',
# 'key2': 'value2',
# })
coalesce_brackets=False
# The column limit.
column_limit=80
# Indent width used for line continuations.
continuation_indent_width=4
# Put closing brackets on a separate line, dedented, if the bracketed
# expression can't fit in a single line. Applies to all kinds of brackets,
# including function definitions and calls. For example:
#
# config = {
# 'key1': 'value1',
# 'key2': 'value2',
# } # <--- this bracket is dedented and on a separate line
#
# time_series = self.remote_client.query_entity_counters(
# entity='dev3246.region1',
# key='dns.query_latency_tcp',
# transform=Transformation.AVERAGE(window=timedelta(seconds=60)),
# start_ts=now()-timedelta(days=3),
# end_ts=now(),
# ) # <--- this bracket is dedented and on a separate line
dedent_closing_brackets=True
# Place each dictionary entry onto its own line.
each_dict_entry_on_separate_line=True
# The regex for an i18n comment. The presence of this comment stops
# reformatting of that line, because the comments are required to be
# next to the string they translate.
i18n_comment=#\..*
# The i18n function call names. The presence of this function stops
# reformattting on that line, because the string it has cannot be moved
# away from the i18n comment.
i18n_function_call=['N_', '_']
# Indent the dictionary value if it cannot fit on the same line as the
# dictionary key. For example:
#
# config = {
# 'key1':
# 'value1',
# 'key2': value1 +
# value2,
# }
indent_dictionary_value=False
# The number of columns to use for indentation.
indent_width=4
# Join short lines into one line. E.g., single line 'if' statements.
join_multiple_lines=True
# Do not include spaces around selected binary operators. For example:
#
# 1 + 2 * 3 - 4 / 5
#
# will be formatted as follows when configured with a value "*,/":
#
# 1 + 2*3 - 4/5
#
no_spaces_around_selected_binary_operators=set()
# Use spaces around default or named assigns.
spaces_around_default_or_named_assign=False
# Use spaces around the power operator.
spaces_around_power_operator=False
# The number of spaces required before a trailing comment.
spaces_before_comment=2
# Insert a space between the ending comma and closing bracket of a list,
# etc.
space_between_ending_comma_and_closing_bracket=False
# Split before arguments if the argument list is terminated by a
# comma.
split_arguments_when_comma_terminated=False
# Set to True to prefer splitting before '&', '|' or '^' rather than
# after.
split_before_bitwise_operator=False
# Split before a dictionary or set generator (comp_for). For example, note
# the split before the 'for':
#
# foo = {
# variable: 'Hello world, have a nice day!'
# for variable in bar if variable != 42
# }
split_before_dict_set_generator=True
# Split after the opening paren which surrounds an expression if it doesn't
# fit on a single line.
split_before_expression_after_opening_paren=False
# If an argument / parameter list is going to be split, then split before
# the first argument.
split_before_first_argument=False
# Set to True to prefer splitting before 'and' or 'or' rather than
# after.
split_before_logical_operator=False
# Split named assignments onto individual lines.
split_before_named_assigns=True
# Set to True to split list comprehensions and generators that have
# non-trivial expressions and multiple clauses before each of these
# clauses. For example:
#
# result = [
# a_long_var + 100 for a_long_var in xrange(1000)
# if a_long_var % 10]
#
# would reformat to something like:
#
# result = [
# a_long_var + 100
# for a_long_var in xrange(1000)
# if a_long_var % 10]
split_complex_comprehension=True
# The penalty for splitting right after the opening bracket.
split_penalty_after_opening_bracket=30
# The penalty for splitting the line after a unary operator.
split_penalty_after_unary_operator=10000
# The penalty for splitting right before an if expression.
split_penalty_before_if_expr=0
# The penalty of splitting the line around the '&', '|', and '^'
# operators.
split_penalty_bitwise_operator=300
# The penalty for splitting a list comprehension or generator
# expression.
split_penalty_comprehension=2100
# The penalty for characters over the column limit.
split_penalty_excess_character=4500
# The penalty incurred by adding a line split to the unwrapped line. The
# more line splits added the higher the penalty.
split_penalty_for_added_line_split=30
# The penalty of splitting a list of "import as" names. For example:
#
# from a_very_long_or_indented_module_name_yada_yad import (long_argument_1,
# long_argument_2,
# long_argument_3)
#
# would reformat to something like:
#
# from a_very_long_or_indented_module_name_yada_yad import (
# long_argument_1, long_argument_2, long_argument_3)
split_penalty_import_names=0
# The penalty of splitting the line around the 'and' and 'or'
# operators.
split_penalty_logical_operator=300
# Use the Tab character for indentation.
use_tabs=False

31
src/SConstruct Normal file
View File

@@ -0,0 +1,31 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
Help("""
DEBUG=1,0 - enable debug build, default 1
""")
def build():
from miscsetup import CustomBuildEnvironment
env = CustomBuildEnvironment()
env.build()
if not GetOption('help'):
build()

3
src/site_scons/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
__pycache__/

View File

@@ -0,0 +1,62 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
from .RunableTarget import RunableTarget
class Executable(RunableTarget):
def __init__(
self, env, name, sources, localStaticLibs, localSharedLibs,
externalLibs, isBin
):
self.__target = None
self.__isBin = isBin
super(Executable, self).__init__(
env, name, sources, localStaticLibs, localSharedLibs, externalLibs
)
self.writeScript()
self.env.Install(self.installDir, self.target)
@property
def installDir(self):
return self.binDir if self.__isBin else \
self.etcDir
@property
def scriptFileDir(self):
return self.installDir
@property
def target(self):
if self.__target is None:
self.__target = \
self.env.Program(target=self.name,
source=self.sources,
LIBS=self.localSharedLibsNames + self.externalLibsNames,
LIBPATH=self.env['LIBPATH'] +
self.externalLibsPaths,
CPPPATH=self.env['CPPPATH'] +
self.externalLibsIncludes,
CPPFLAGS=self.cppFlags,
LINKFLAGS=self.linkFlags)
return self.__target

View File

@@ -0,0 +1,163 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
import os
class LocalTarget(object):
def __init__(
self, env, name, sources, localStaticLibs, localSharedLibs, externalLibs
):
self.__env = env
self.__name = name
self.__sources = sources
self.__localStaticLibs = localStaticLibs
self.__localSharedLibs = localSharedLibs
self.__externalLibs = externalLibs
self.__localDir = os.getcwd()
@property
def installDir(self):
assert False
@property
def target(self):
assert False
@property
def env(self):
return self.defaultEnv
@property
def defaultEnv(self):
return self.__env.defaultEnv
@property
def swigEnv(self):
return self.__env.swigEnv
@property
def srcDir(self):
return self.__env.srcDir
@property
def buildDir(self):
return self.__env.buildDir
@property
def binDir(self):
return self.__env.binDir
@property
def libDir(self):
return self.__env.libDir
@property
def libPyDir(self):
return self.__env.libPyDir
@property
def testDir(self):
return self.__env.testDir
@property
def etcDir(self):
return self.__env.etcDir
@property
def isWindows(self):
return self.__env.isWindows
@property
def isLinux(self):
return self.__env.isLinux
@property
def isClean(self):
return self.__env.isClean
@property
def name(self):
return self.__name
@property
def sources(self):
return self.__sources
@property
def cppFlags(self):
return self.env['CPPFLAGS']
@property
def linkFlags(self):
return self.env['LINKFLAGS']
@property
def cppDefines(self):
return self.env['CPPDEFINES'].copy()
@property
def localSharedLibsNames(self):
return self.__localSharedLibs
@property
def externalLibs(self):
return self.__externalLibs
@property
def localDir(self):
return self.__localDir
@property
def externalLibsNames(self):
nameList = []
for externalLib in self.externalLibs:
nameList += externalLib.lib
return nameList
@property
def externalLibsPaths(self):
return [lib.libPath for lib in self.externalLibs if lib.libPath]
@property
def externalLibsIncludes(self):
return [lib.include for lib in self.externalLibs if lib.include]
def absPath(self, path):
return os.path.abspath(path)
def dirName(self, path):
return os.path.dirname(path)
def join(self, *paths):
return os.path.join(*paths)
def isFile(self, fileNamePath):
return os.path.isfile(fileNamePath)
def clean(self, fileNamePath):
if not all([self.isClean, self.isFile(fileNamePath)]):
return
os.remove(fileNamePath)
print('Removed', fileNamePath)
def summary(self):
lstr = self.name + '\n'
return lstr

View File

@@ -0,0 +1,78 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
from .LocalTarget import LocalTarget
class RunableTarget(LocalTarget):
def __init__(
self, env, name, sources, localStaticLibs, localSharedLibs, externalLibs
):
super(RunableTarget, self).__init__(
env, name, sources, localStaticLibs, localSharedLibs, externalLibs
)
@property
def scriptFileDir(self):
assert False
def getScriptFilePath(self):
import os
scriptFileDir = self.scriptFileDir
if not os.path.exists(scriptFileDir):
os.makedirs(scriptFileDir)
if self.isLinux:
return os.path.join(scriptFileDir, self.name) + '.sh'
elif self.isWindows:
return os.path.join(scriptFileDir, self.name) + '.exe.bat'
def _writeLinuxScript(self):
scriptPath = self.getScriptFilePath()
self.clean(scriptPath)
if all([not self.isClean, not self.isFile(scriptPath)]):
print('Writing', scriptPath)
with open(scriptPath, 'w') as f:
f.write(r'#!/bin/sh' + '\n')
f.write(r'SCRIPT=`realpath -s $0`' + '\n')
f.write(r'SCRIPTPATH=`dirname $SCRIPT`' + '\n')
f.write(
r'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:' + self.libDir +
'\n'
)
f.write(r'$SCRIPTPATH/' + self.name + r' "$@"')
import os
os.system('chmod +x ' + scriptPath)
def _writeWindowsScript(self):
scriptPath = self.getScriptFilePath()
self.clean(scriptPath)
if all([not self.isClean, not self.isFile(scriptPath)]):
print('Writing', scriptPath)
with open(scriptPath, 'w') as f:
f.write(r'@echo off' + '\n')
f.write(r'setlocal' + '\n')
f.write(r'set scriptPath=%~dp0' + '\n')
f.write(r'PATH=$PATH;' + self.libDir + '\n')
f.write(r'%scriptPath%' + self.name + r' %*')
def writeScript(self):
if self.isLinux:
return self._writeLinuxScript()
elif self.isWindows:
return self._writeWindowsScript()

View File

@@ -0,0 +1,18 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
from .Executable import Executable

View File

@@ -0,0 +1,95 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
import os
import platform
import sys
import SCons
class Architecture(object):
def __init__(self):
self.__osName = platform.system()
self.__pythonVersion = platform.python_version()
self.__sconsVersion = SCons.__version__
if self.__osName not in self.supportedSystems:
raise RuntimeError('Unsupported OS architecture.')
self.__sysDirName = 'unknown'
if self.isLinux:
self.__sysDirName = 'linx64'
if not 'LD_LIBRARY_PATH' in os.environ:
os.environ['LD_LIBRARY_PATH'] = ''
elif self.isWindows:
self.__sysDirName = 'winx64'
@property
def supportedSystems(self):
return ['Windows', 'Linux']
@property
def osName(self):
return self.__osName
@property
def isWindows(self):
return self.osName == 'Windows'
@property
def isLinux(self):
return self.osName == 'Linux'
@property
def pythonVersion(self):
return self.__pythonVersion
@property
def sconsVersion(self):
return self.__sconsVersion
@property
def sysDirName(self):
return self.__sysDirName
def _getFormatedPaths(self, pathStr):
return str(pathStr.split(os.pathsep)).replace(', ', ',\n').replace(
'[', '[\n'
).replace(']', '\n]')
def summary(self):
lstr = '=' * 50 + '\n'
lstr += 'Architecture Summary\n'
lstr += '=' * 50 + '\n'
lstr += 'operating system: ' + self.osName + '\n'
lstr += 'python version: ' + self.pythonVersion + '\n'
lstr += 'scons version: ' + self.sconsVersion + '\n'
lstr += 'path: ' + \
self._getFormatedPaths(os.environ['PATH']) + '\n'
if self.isLinux:
lstr += 'LD_LIBRARY_PATH: ' + \
self._getFormatedPaths(os.environ['LD_LIBRARY_PATH']) + '\n'
if os.environ.get('PYTHONPATH'):
lstr += 'python path: ' + \
self._getFormatedPaths(os.environ['PYTHONPATH']) + '\n'
lstr += 'session python path: ' + \
self._getFormatedPaths(os.pathsep.join(sys.path)) + '\n'
lstr += '-' * 50 + '\n'
return lstr

View File

@@ -0,0 +1,66 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
class ArgumentsSetup(object):
def __init__(self):
from SCons.Script import ARGUMENTS, GetOption
self.__debugArg = ARGUMENTS.get('DEBUG', '1')
if self.__debugArg not in ['0', '1']:
raise RuntimeError('Check the DEBUG input argument.')
self.__assertArg = '1' if self.__debugArg == '1' else '0'
if self.__assertArg not in ['0', '1']:
raise RuntimeError('Check the ASSERT input argument.')
self.__compilerName = ARGUMENTS.get('COMPILER', '')
self.__isClean = GetOption('clean')
@property
def isDebug(self):
return self.__debugArg == '1'
@property
def isAssert(self):
return self.__assertArg == '1'
@property
def compilerName(self):
return self.__compilerName
@property
def isClean(self):
return self.__isClean
def summary(self):
def printDefault(x):
return x if x else '-default-'
lstr = '=' * 50 + '\n'
lstr += 'Build Arguments Summary\n'
lstr += '=' * 50 + '\n'
lstr += 'debug: ' + str(self.isDebug) + '\n'
lstr += 'assert: ' + str(self.isAssert) + '\n'
lstr += 'compiler name: ' + printDefault(self.compilerName) + '\n'
lstr += 'clean build: ' + str(self.isClean) + '\n'
lstr += '-' * 50 + '\n'
return lstr

View File

@@ -0,0 +1,162 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
class BuildPath(object):
def __init__(self, archObj, argObj):
import os
from SCons.Script import Dir
# main
self.__srcDir = Dir('#').abspath
self.__projectDir = os.path.abspath(os.path.join(self.__srcDir, '..'))
self.__runtimeDir = os.path.join(self.__projectDir, 'runtime')
self.__thirdpartyDir = os.path.join(self.__projectDir, 'thirdparty')
#assert os.path.exists(self.__runtimeDir)
#assert os.path.exists(self.__thirdpartyDir)
def _exist(path):
if not os.path.exists(path):
os.makedirs(path)
return path
# build variables
self.__buildDir = os.path.join(
self.__projectDir, 'build', archObj.sysDirName
)
self.__installDir = os.path.join(
self.__projectDir, 'install', archObj.sysDirName
)
self.__buildDir = _exist(self.__buildDir)
self.__binDir = _exist(os.path.join(self.__installDir, 'bin'))
self.__libDir = _exist(os.path.join(self.__installDir, 'lib'))
self.__libPyDir = _exist(os.path.join(self.__libDir, 'py'))
self.__testDir = _exist(os.path.join(self.__installDir, 'test'))
self.__etcDir = _exist(os.path.join(self.__installDir, 'etc'))
# lib
self.__runtimeArchDir = os.path.join(
self.__runtimeDir, archObj.sysDirName
)
#assert os.path.exists(self.__runtimeArchDir)
# thirdparty
__thirdpartyNoArchDir = os.path.join(self.__thirdpartyDir, 'noarch')
__thirdpartyArchDir = os.path.join(
self.__thirdpartyDir, archObj.sysDirName
)
self.__thirdpartyNoArchBinDir = os.path.join(
__thirdpartyNoArchDir, 'bin'
)
self.__thirdpartyArchBinDir = os.path.join(__thirdpartyArchDir, 'bin')
#assert os.path.exists(self.__thirdpartyNoArchBinDir)
#assert os.path.exists(self.__thirdpartyArchBinDir)
self.__thirdpartyNoArchIncludeDir = os.path.join(
__thirdpartyNoArchDir, 'include'
)
self.__thirdpartyArchIncludeDir = os.path.join(
__thirdpartyArchDir, 'include'
)
#assert os.path.exists(self.__thirdpartyNoArchIncludeDir)
#assert os.path.exists(self.__thirdpartyArchIncludeDir)
self.__thirdpartyNoArchLibDir = os.path.join(
__thirdpartyNoArchDir, 'lib'
)
self.__thirdpartyArchLibDir = os.path.join(__thirdpartyArchDir, 'lib')
#assert os.path.exists(self.__thirdpartyNoArchLibDir)
#assert os.path.exists(self.__thirdpartyArchLibDir)
self.__thirdpartyNoArchLibPyDir = os.path.join(
self.__thirdpartyNoArchLibDir, 'py'
)
#assert os.path.exists(self.__thirdpartyNoArchLibPyDir)
@property
def projectDir(self):
return self.__projectDir
@property
def srcDir(self):
return self.__srcDir
@property
def buildDir(self):
return self.__buildDir
@property
def binDir(self):
return self.__binDir
@property
def libDir(self):
return self.__libDir
@property
def libPyDir(self):
return self.__libPyDir
@property
def testDir(self):
return self.__testDir
@property
def etcDir(self):
return self.__etcDir
@property
def runtimeArchDir(self):
return self.__runtimeArchDir
@property
def thirdpartyNoArchIncludeDir(self):
return self.__thirdpartyNoArchIncludeDir
@property
def thirdpartyArchIncludeDir(self):
return self.__thirdpartyArchIncludeDir
@property
def thirdpartyArchLibDir(self):
return self.__thirdpartyArchLibDir
def summary(self):
lstr = '=' * 50 + '\n'
lstr += 'Paths Summary\n'
lstr += '=' * 50 + '\n'
lstr += 'project: ' + self.projectDir + '\n'
lstr += 'build: ' + self.buildDir + '\n'
lstr += 'install bin: ' + self.binDir + '\n'
lstr += 'install lib: ' + self.libDir + '\n'
lstr += 'install py: ' + self.libPyDir + '\n'
lstr += 'install test: ' + self.testDir + '\n'
lstr += 'install etc: ' + self.etcDir + '\n'
lstr += 'runtime: ' + self.runtimeArchDir + '\n'
lstr += 'thirdparty noarch include: ' + self.thirdpartyNoArchIncludeDir + '\n'
lstr += 'thirdparty arch include: ' + self.thirdpartyArchIncludeDir + '\n'
lstr += 'thirdparty arch lib: ' + self.thirdpartyArchLibDir + '\n'
lstr += '-' * 50 + '\n'
return lstr

View File

@@ -0,0 +1,243 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
class CompilerSetup(object):
def __init__(self, archObj, argObj):
self.__archObj = archObj
self.__argObj = argObj
self.__gccCom = 'gcc'
self.__intelCom = 'intel'
self.__clangCom = 'clang'
self.__msvcCom = 'msvc'
if archObj.isLinux:
self.__defaultCompiler = self.__gccCom
self.__compilers = {
self.__gccCom: ['gcc', 'g++'],
self.__intelCom: ['ic', 'icpc'],
self.__clangCom: ['clang', 'clang++']
}
elif archObj.isWindows:
self.__defaultCompiler = self.__msvcCom
self.__compilers = {
self.__msvcCom: ['cl', 'cl'],
self.__intelCom: ['ic', 'icpp'],
self.__clangCom: ['clang', 'clang++']
}
self.__compiler = argObj.compilerName if argObj.compilerName else \
self.__defaultCompiler
if self.__compiler not in self.__compilers:
raise RuntimeError('Check the COMPILER input argument.')
#
# widnows compilers
#
def _clang_windows(self):
return dict(
ccFlags=["-std=c++1z", '-fms-compatibility-version=21'],
optCFlags=["-O3"],
optLinkFlags=["-Wl,--export-dynamic"],
debugCFlags=[
"-O0", "-Wall", "-Wuninitialized", "-Wunused", "-Wconversion",
"-fpermissive"
],
debugLinkFlags=["-g"],
profileCFlags=["-g"],
profileLinkFlags=["-g"],
ompCFlags=["-fopenmp"],
ompLinkFlags=["-fopenmp"],
defFlagsStr="-D",
includeFlagsStr="-I"
)
def _intel_windows(self):
return dict(
ccFlags=["/MD", "/EHsc", "/Qvc10"],
optCFlags=[
"/O3", "/Qrestrict", "/Qprec-div-", "/Qvec-report0", "/Qip"
], # last not profile only
optLinkFlags=["/MANIFEST"],
debugCFlags=[
"/Zi", "/Qrestrict", "/Fd${TARGET}.pdb", "/Od", "/W3", "/Wcheck"
],
debugLinkFlags=["/debug"],
profileCFlags=["/Zi", "/Fd${TARGET}.pdb", "/Qprof-gen-"],
profileLinkFlags=["/debug"],
ompCFlags=["/Qopenmp"],
ompLinkFlags=[""],
defFlagsStr="/D",
includeFlagsStr="/I"
)
def _msvc_windows(self):
return dict(
ccFlags=["/MD", "/EHsc", "/wd4251"],
optCFlags=["/O2"],
optLinkFlags=["/MANIFEST"],
debugCFlags=["/Od", "/Zi", "/Fd${TARGET}.pdb", "/W3"],
debugLinkFlags=["/debug"],
profileCFlags=["/Zi", "/Fd${TARGET}.pdb"],
profileLinkFlags=["/debug"],
ompCFlags=["/openmp"],
ompLinkFlags=[""],
defFlagsStr="/D",
includeFlagsStr="/I"
)
#
# linux compilers
#
def _clang_linux(self):
return dict(
ccFlags=["-std=c++1z"],
optCFlags=["-O3"],
optLinkFlags=["-Wl,--export-dynamic"],
debugCFlags=[
"-g", "-O0", "-Wall", "-Wuninitialized", "-Wunused",
"-Wconversion", "-fpermissive"
],
debugLinkFlags=["-g"],
profileCFlags=["-g"],
profileLinkFlags=["-g"],
ompCFlags=["-fopenmp"],
ompLinkFlags=["-fopenmp"],
defFlagsStr="-D",
includeFlagsStr="-I"
)
def _intel_linux(self):
return dict(
ccFlags=["-Wcheck"],
optCFlags=["-O3", "-no-prec-div", "-ip", "-qopt-report"],
optLinkFlags=["-O3"],
debugCFlags=["-g", "-O0", "-Wall"],
debugLinkFlags=["-g", "-O0"],
profileCFlags=["-g"],
profileLinkFlags=["-g"],
ompCFlags=["-openmp"],
ompLinkFlags=["-openmp"],
defFlagsStr="-D",
includeFlagsStr="-I"
)
def _gcc_linux(self):
return dict(
ccFlags=["-std=c++1z"],
optCFlags=["-O3"],
optLinkFlags=["-Wl,--export-dynamic"],
debugCFlags=[
"-g", "-O0", "-Wall", "-Wuninitialized", "-Wunused",
"-Wconversion", "-fpermissive", "-Wimplicit-fallthrough"
],
debugLinkFlags=["-g"],
profileCFlags=["-g"],
profileLinkFlags=["-g"],
ompCFlags=["-fopenmp"],
ompLinkFlags=["-fopenmp"],
defFlagsStr="-D",
includeFlagsStr="-I"
)
def _arch_compiler_flags(self):
if self.__archObj.isLinux:
if self.__compiler == self.__gccCom:
return self._gcc_linux()
elif self.__compiler == self.__intelCom:
return self._intel_linux()
elif self.__compiler == self.__clangCom:
return self._clang_linux()
elif self.__archObj.isWindows:
retDict = None
if self.__compiler == self.__msvcCom:
retDict = self._msvc_windows()
elif self.__compiler == self.__intelCom:
retDict = self._intel_windows()
elif self.__compiler == self.__clangCom:
retDict = self._clang_windows()
return retDict
@property
def compilers(self):
return self.__compilers
@property
def defaultCompiler(self):
return self.__defaultCompiler
@property
def compiler(self):
return self.__compiler
@property
def cCompiler(self):
return self.__compilers[self.compiler][0]
@property
def cppCompiler(self):
return self.__compilers[self.compiler][1]
def getFlags(self):
__buildFlags = []
__linkFlags = []
__archFlags = self._arch_compiler_flags()
__buildFlags += __archFlags['ccFlags']
if self.__argObj.isDebug:
__buildFlags += __archFlags['debugCFlags']
__linkFlags += __archFlags['debugLinkFlags']
else:
__buildFlags += __archFlags['optCFlags']
__linkFlags += __archFlags['optLinkFlags']
__localDefs = {}
if not self.__argObj.isAssert:
__localDefs['NDEBUG'] = None
if self.__archObj.isWindows:
#__localDefs['BOOST_LIB_TOOLSET'] = 'vc141'
__localDefs['BOOST_ALL_DYN_LINK'] = None
#__localDefs['BOOST_LIB_DIAGNOSTIC'] = None
return dict(
buildFlags=__buildFlags,
linkFlags=__linkFlags,
localDefs=__localDefs,
defFlagsStr=__archFlags['defFlagsStr'],
includeFlagsStr=__archFlags['includeFlagsStr']
)
def summary(self):
__archFlags = self.getFlags()
lstr = '=' * 50 + '\n'
lstr += 'Compiler Configuration Summary\n'
lstr += '=' * 50 + '\n'
lstr += 'system compilers: ' + str(self.compilers) + '\n'
lstr += 'default compiler: ' + self.defaultCompiler + '\n'
lstr += 'selected compiler: ' + self.compiler + '\n'
lstr += 'build flags: ' + str(__archFlags['buildFlags']) + '\n'
lstr += 'link flags: ' + str(__archFlags['linkFlags']) + '\n'
lstr += 'def flags: ' + str(__archFlags['localDefs']) + '\n'
lstr += '-' * 50 + '\n'
return lstr

View File

@@ -0,0 +1,253 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
import os
from SCons.Script import (Environment, Alias, Default, VariantDir, SConscript)
from localtargets import Executable as LocalExecutable
class CustomBuildEnvironment(object):
def __init__(self):
from .Architecture import Architecture
from .ArgumentsSetup import ArgumentsSetup
from .CompilerSetup import CompilerSetup
from .BuildPath import BuildPath
from .NamedObjectTable import NamedObjectTable
self.__archConfig = Architecture()
self.__argumentsConfig = ArgumentsSetup()
self.__compilerConfig = CompilerSetup(
self.__archConfig, self.__argumentsConfig
)
self.__pathConfig = BuildPath(self.__archConfig, self.__argumentsConfig)
additionalEnv = dict(
tools=[
'default',
]
)
self.__defaultEnv = Environment(ENV=os.environ, **additionalEnv)
buildAndLinkFlags = self.__compilerConfig.getFlags()
self.__defaultEnv.Replace(
CC=self.__compilerConfig.cCompiler,
CXX=self.__compilerConfig.cppCompiler
)
self.__defaultEnv['CPPFLAGS'] = buildAndLinkFlags['buildFlags']
self.__defaultEnv['LINKFLAGS'] = buildAndLinkFlags['linkFlags']
self.__defaultEnv['CPPDEFINES'] = buildAndLinkFlags['localDefs']
self.__defaultEnv['CPPDEFPREFIX'] = buildAndLinkFlags['defFlagsStr']
self.__defaultEnv['INCPREFIX'] = buildAndLinkFlags['includeFlagsStr']
self.__defaultEnv['CPPPATH'] = [
self.__pathConfig.srcDir,
self.__pathConfig.thirdpartyNoArchIncludeDir,
self.__pathConfig.thirdpartyArchIncludeDir,
]
self.__defaultEnv['LIBPATH'] = [self.__pathConfig.libDir]
'''
self.__defaultEnv['_MSVC_OUTPUT_FLAG'] = '-o $TARGET'
self.__defaultEnv['CCCOM'] = self.__defaultEnv['CCCOM'].replace('/c', '-c')
self.__defaultEnv['CXXCOM'] = self.__defaultEnv['CXXCOM'].replace('/c', '-c')
self.__defaultEnv['SHCCCOM'] = self.__defaultEnv['SHCCCOM'].replace('/c', '-c')
self.__defaultEnv['SHCXXCOM'] = self.__defaultEnv['SHCXXCOM'].replace('/c', '-c')
self.__defaultEnv['CCFLAGS'].remove('/nologo')
self.__defaultEnv['CXXFLAGS'].remove('/TP')
'''
Alias('installBin', self.__pathConfig.binDir)
Alias('installLib', self.__pathConfig.libDir)
Alias('installLibPy', self.__pathConfig.libPyDir)
Alias('installTest', self.__pathConfig.testDir)
Alias('installEtc', self.__pathConfig.etcDir)
Alias(
'install', [
'installBin', 'installLib', 'installLibPy',
'installTest', 'installEtc'
]
)
Default('install')
'''
open('defaultEnv.txt', 'w').write(self.__defaultEnv.Dump())
'''
self.__localTargets = {
name: NamedObjectTable(tableName=title)
for name, title in [
('program', 'Programs'),
]
}
if self.isLinux:
pass #self.defaultEnv.Install(self.libDir, self.runtimeArchDir)
@property
def SConscript(self):
return 'SConscript'
@property
def defaultEnv(self):
return self.__defaultEnv
@property
def swigEnv(self):
return self.__swigEnv
@property
def srcDir(self):
return self.__pathConfig.srcDir
@property
def startDir(self):
return self.__pathConfig.startDir
@property
def cppDir(self):
return self.__pathConfig.cppDir
@property
def buildDir(self):
return self.__pathConfig.buildDir
@property
def binDir(self):
return self.__pathConfig.binDir
@property
def libDir(self):
return self.__pathConfig.libDir
@property
def libPyDir(self):
return self.__pathConfig.libPyDir
@property
def testDir(self):
return self.__pathConfig.testDir
@property
def etcDir(self):
return self.__pathConfig.etcDir
@property
def runtimeArchDir(self):
return self.__pathConfig.runtimeArchDir
@property
def thirdpartyArchLibDir(self):
return self.__pathConfig.thirdpartyArchLibDir
@property
def thirdpartyLibsPyDir(self):
return self.__pathConfig.thirdpartyLibsPyDir
@property
def isWindows(self):
return self.__archConfig.isWindows
@property
def isLinux(self):
return self.__archConfig.isLinux
@property
def isClean(self):
return self.__argumentsConfig.isClean
def _checkSources(self, sources, isShared=False):
if isinstance(sources, str):
sources = [sources]
assert isinstance(sources, list)
# sources = list(set(sources))
newSources = []
for src in sources:
if '.proto' in src:
protoObj = self.__localTargets['proto'].get(
[src.replace('.proto', '')]
)[0]
for ccSrc in protoObj.getCC():
newSources.append(
self.defaultEnv.SharedObject(ccSrc)
if isShared else self.defaultEnv.Object(ccSrc)
)
else:
newSources.append(src)
return newSources
def program(
self,
targetName,
sources,
localStaticLibs=[],
localSharedLibs=[],
externalLibs=[],
isBin=False
):
sources = self._checkSources(sources)
progObj = LocalExecutable(
env=self,
name=targetName,
sources=sources,
localStaticLibs=localStaticLibs,
localSharedLibs=localSharedLibs,
externalLibs=[],#self.__externalLibTable.get(externalLibs),
isBin=isBin
)
self.__localTargets['program'].register(progObj)
return progObj
def _buildSConscript(self):
def _getRootList():
for root, _, files in os.walk(self.srcDir):
if self.SConscript in files:
yield root.replace(self.srcDir, self.buildDir)
for root in _getRootList():
SConscript(
os.path.join(root, self.SConscript), exports={
'env': self
}
)
def build(self):
VariantDir(variant_dir=self.buildDir, src_dir=self.srcDir, duplicate=0)
self._buildSConscript()
print(self.summary())
def summary(self):
lstr = self.__archConfig.summary()
lstr += self.__argumentsConfig.summary()
lstr += self.__compilerConfig.summary()
lstr += self.__pathConfig.summary()
for name in sorted(list(self.__localTargets.keys())):
lstr += self.__localTargets[name].summary()
return lstr

View File

@@ -0,0 +1,52 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
class NamedObjectTable(object):
def __init__(self, tableName):
self.__name = tableName
self.__list = {}
@property
def name(self):
return self.__name
def register(self, namedObj):
self.__list[namedObj.name] = namedObj
def get(self, objNames):
keys = list(self.__list.keys())
namedObjs = []
for objName in objNames:
if objName in keys:
namedObjs.append(self.__list[objName])
else:
raise RuntimeError('Unknown ' + self.name + ': ' + objName)
return namedObjs
def iterObjects(self):
return iter(list(self.__list.values()))
def summary(self):
lstr = '=' * 50 + '\n'
lstr += self.name + ' Summary\n'
lstr += '=' * 50 + '\n'
for namedObj in list(self.__list.values()):
lstr += namedObj.summary() + '-' * 50 + '\n'
return lstr

View File

@@ -0,0 +1,18 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
from .CustomBuildEnvironment import CustomBuildEnvironment

View File

@@ -0,0 +1,16 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#

22
src/structural/SConscript Normal file
View File

@@ -0,0 +1,22 @@
#
# This file is part of cpp-patterns.
#
# cpp-patterns is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cpp-patterns is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
#
Import('env')
env.program(targetName='decoratorEx',
sources=['decorator/decorator.cpp'],
localSharedLibs=[])

View File

@@ -0,0 +1,50 @@
/*
* This file is part of cpp-patterns.
*
* cpp-patterns is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* cpp-patterns is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef SRC_STRUCTURAL_DECORATOR_COMMAND_HPP_
#define SRC_STRUCTURAL_DECORATOR_COMMAND_HPP_
#include <type_traits>
namespace structural {
namespace decorator {
struct Command {
virtual ~Command() = default;
virtual void execute() const = 0;
template <class T>
static Command* generate(Command* p = nullptr)
{
return p ? p : new T();
}
template <class D, class... Types>
static std::enable_if_t<sizeof...(Types) >= 1, Command*> generate(
Command* p = nullptr)
{
return new D(generate<Types...>(p));
}
};
} // namespace decorator
} // namespace structural
#endif // SRC_STRUCTURAL_DECORATOR_COMMAND_HPP_

View File

@@ -0,0 +1,54 @@
/*
* This file is part of cpp-patterns.
*
* cpp-patterns is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* cpp-patterns is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef SRC_STRUCTURAL_DECORATOR_DECORATOR_HPP_
#define SRC_STRUCTURAL_DECORATOR_DECORATOR_HPP_
#include "Command.hpp"
#include <memory>
namespace structural {
namespace decorator {
class Decorator : public Command {
public:
Decorator(const Command* const p) : m_p(p) {}
virtual ~Decorator() = default;
virtual void execute() const override final
{
this->decorateBefore();
m_p->execute();
this->decorateAfter();
}
protected:
virtual void decorateBefore() const = 0;
virtual void decorateAfter() const = 0;
private:
const std::unique_ptr<const Command> m_p;
};
} // namespace decorator
} // namespace structural
#endif // SRC_STRUCTURAL_DECORATOR_DECORATOR_HPP_

View File

@@ -0,0 +1,51 @@
/*
* This file is part of cpp-patterns.
*
* cpp-patterns is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* cpp-patterns is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef SRC_STRUCTURAL_DECORATOR_DECORATORS_HPP_
#define SRC_STRUCTURAL_DECORATOR_DECORATORS_HPP_
#include "Decorator.hpp"
namespace structural {
namespace decorator {
class BeforeDecorator : public Decorator {
public:
BeforeDecorator(const Command* const p) : Decorator(p) {}
virtual ~BeforeDecorator() = default;
protected:
virtual void decorateAfter() const override final {}
};
class AfterDecorator : public Decorator {
public:
AfterDecorator(const Command* const p) : Decorator(p) {}
virtual ~AfterDecorator() = default;
protected:
virtual void decorateBefore() const override final {}
};
} // namespace decorator
} // namespace structural
#endif // SRC_STRUCTURAL_DECORATOR_DECORATORS_HPP_

View File

@@ -0,0 +1,120 @@
/*
* This file is part of cpp-patterns.
*
* cpp-patterns is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* cpp-patterns is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with cpp-patterns. If not, see <http://www.gnu.org/licenses/>.
*/
#include "Decorators.hpp"
#include <iostream>
#include <string>
class DecoratorA : public structural::decorator::BeforeDecorator {
public:
DecoratorA(const structural::decorator::Command* const p)
: structural::decorator::BeforeDecorator(p)
{
}
virtual ~DecoratorA() { std::cout << "destroying DecoratorA\n"; }
protected:
virtual void decorateBefore() const override
{
std::cout << "DecoratorA::decorateBefore()\n";
}
};
class DecoratorB : public structural::decorator::AfterDecorator {
public:
DecoratorB(const structural::decorator::Command* const p)
: structural::decorator::AfterDecorator(p)
{
}
virtual ~DecoratorB() { std::cout << "destroying DecoratorB\n"; }
protected:
virtual void decorateAfter() const override
{
std::cout << "DecoratorB::decorateAfter()\n";
}
};
class DecoratorC : public structural::decorator::AfterDecorator {
public:
DecoratorC(const structural::decorator::Command* const p)
: structural::decorator::AfterDecorator(p)
{
}
virtual ~DecoratorC() { std::cout << "destroying DecoratorC\n"; }
protected:
virtual void decorateAfter() const override
{
std::cout << "DecoratorC::decorateAfter()\n";
}
};
class DecoratorD : public structural::decorator::BeforeDecorator {
public:
DecoratorD(const structural::decorator::Command* const p)
: structural::decorator::BeforeDecorator(p)
{
}
virtual ~DecoratorD() { std::cout << "destroying DecoratorD\n"; }
protected:
virtual void decorateBefore() const override
{
std::cout << "DecoratorD::decorateBefore()\n";
}
};
struct CommandA : public structural::decorator::Command {
CommandA() = default;
virtual ~CommandA() = default;
virtual void execute() const override
{
std::cout << "CommandA::execute()\n";
}
};
int
main(int argc, char** argv)
{
// auto a = structural::decorator::Command::generate<DecoratorA, CommandA>();
auto af = structural::decorator::Command::
generate<DecoratorB, DecoratorD, DecoratorA, DecoratorC, CommandA>();
// auto ag = structural::decorator::Command::generate<DecoratorB, DecoratorD,
// DecoratorA, DecoratorC, CommandA>(af); auto ak =
// structural::decorator::Command::generate<DecoratorB, DecoratorD,
// DecoratorA, DecoratorC, DecoratorB, DecoratorD, DecoratorA, DecoratorC,
// CommandA>();
std::cout << "----------------------\n";
// a->execute();
af->execute();
// ag->execute();
// ak->execute();
std::cout << "----------------------\n";
// delete a;
delete af;
// delete ak;
}