Skip to content

Commit

Permalink
implemented most of the basic container functionality
Browse files Browse the repository at this point in the history
- custom allocator support
- `swap()`
- `reserve()`
- `shrink_to_fit()`
- `pop_back()`
- copy/move construct/assign (when supported by members + allocator)
- strong exception guarantees wherever possible
- `resize()`
- `max_size()`
- per-column accessors
  • Loading branch information
marzer committed Jul 15, 2023
1 parent da773ec commit f31bcb3
Show file tree
Hide file tree
Showing 66 changed files with 15,111 additions and 2 deletions.
200 changes: 200 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
---
Language: Cpp
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveMacros: Consecutive
AlignConsecutiveAssignments: Consecutive
AlignConsecutiveBitFields: Consecutive
AlignConsecutiveDeclarations: None
AlignEscapedNewlines: Right
AlignOperands: AlignAfterOperator
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: false
AllowAllConstructorInitializersOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortEnumsOnASingleLine: false
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: None
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
AttributeMacros:
- SOAGEN_EMPTY_BASES
- SOAGEN_NODISCARD_CLASS
- SOAGEN_ABSTRACT_INTERFACE
- SOAGEN_TRIVIAL_ABI
- SOAGEN_VECTORCALL
- SOAGEN_CALLCONV
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: Always
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: false
AfterStruct: true
AfterUnion: true
AfterExternBlock: true
BeforeCatch: true
BeforeElse: true
BeforeLambdaBody: true
BeforeWhile: true
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: true
BreakAfterAttributes: Always
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeConceptDeclarations: true
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 120
CommentPragmas: '^([/*!#]|\s*(===|---|clang-format))'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: false
DeriveLineEnding: false
DerivePointerAlignment: false
DisableFormat: false
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: false
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
StatementAttributeLikeMacros:
- Q_EMIT
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: ".*"
Priority: 1
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: "(Test)?$"
IncludeIsMainSourceRegex: ""
IndentCaseLabels: true
IndentCaseBlocks: false
IndentGotoLabels: true
IndentPPDirectives: BeforeHash
IndentExternBlock: Indent
IndentRequires: false
IndentWidth: 4
IndentWrappedFunctionNames: false
InsertTrailingCommas: None
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ""
MacroBlockEnd: ""
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 1
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 1000000
PenaltyIndentedWhitespace: 0
PointerAlignment: Left
QualifierAlignment: Leave
ReflowComments: true
SortIncludes: false
SortJavaStaticImport: Before
SortUsingDeclarations: false
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both
Standard: Latest
StatementMacros:
- SOAGEN_ALIGNED_COLUMN
- SOAGEN_ALWAYS_INLINE
- SOAGEN_API
- SOAGEN_ATTR
- SOAGEN_COLUMN
- SOAGEN_CONST
- SOAGEN_CONST_GETTER
- SOAGEN_CONST_GETTER
- SOAGEN_CONST_INLINE_GETTER
- SOAGEN_CONST_INLINE_GETTER
- SOAGEN_CONSTEVAL
- SOAGEN_CONSTRAINED_TEMPLATE
- SOAGEN_CPP20_CONSTEXPR
- SOAGEN_DECLSPEC
- SOAGEN_HIDDEN_CONSTRAINT
- SOAGEN_INLINE_GETTER
- SOAGEN_MALLOC
- SOAGEN_NEVER_INLINE
- SOAGEN_NODISCARD
- SOAGEN_NODISCARD_CTOR
- SOAGEN_PURE
- SOAGEN_PURE_GETTER
- SOAGEN_PURE_INLINE_GETTER
- _Pragma
- __pragma
TabWidth: 4
TypenameMacros:
UseCRLF: false
UseTab: Always
WhitespaceSensitiveMacros:
- STRINGIZE
- PP_STRINGIZE
- BOOST_PP_STRINGIZE
- SOAGEN_ATTR
- SOAGEN_HAS_ATTR
- SOAGEN_HAS_BUILTIN
- SOAGEN_HAS_CPP_ATTR
- SOAGEN_HAS_FEATURE
- SOAGEN_HAS_INCLUDE
- SOAGEN_LIKELY
- SOAGEN_UNLIKELY
22 changes: 22 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
root = true

[*]
insert_final_newline = true
indent_style = tab
indent_size = 4
tab_width = 4
end_of_line = lf
trim_trailing_whitespace = true
charset = utf-8

[*.{gitattributes,yml,vcxproj,vcxproj.filters,sln,rc,clang-format}]
indent_style = space

[{Doxyfile,Doxyfile-mcss}]
indent_style = space

[*.{hlsl,rc,sln,vcxproj,vcxproj.filters}]
end_of_line = crlf

[*.{sln,vcxproj,vcxproj.filters}]
charset = utf-8-bom
38 changes: 36 additions & 2 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,36 @@
# Auto detect text files and perform LF normalization
* text=auto
* text eol=lf encoding=UTF-8
*.hlsl text eol=crlf encoding=UTF-8
*.rc text eol=crlf encoding=UTF-8
*.sln text eol=crlf encoding=UTF-8-BOM
*.vcxproj text eol=crlf encoding=UTF-8-BOM
*.vcxproj.filters text eol=crlf encoding=UTF-8-BOM

*.cs eol=lf diff=csharp

*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain

*.ai binary
*.bin binary
*.bmp binary
*.dat binary
*.gif binary
*.ico binary
*.jpeg binary
*.jpg binary
*.otf binary
*.png binary
*.psd binary
*.rc binary
*.ttf binary
*.woff binary
*.woff2 binary
*.xlsx binary
114 changes: 114 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/
Loading

0 comments on commit f31bcb3

Please sign in to comment.