From 205187b561c3b31fa931e73e8f7263f0c4b1de41 Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Thu, 15 Jun 2017 13:24:25 -0700 Subject: Rename `CoreLib::*` to `Slang` Getting rid of more namespace complexity and stripping things down to the basics. This also gets rid of some dead code in the "core" library. --- source/core/array.h | 219 ++++++++++++++++++++++++++-------------------------- 1 file changed, 108 insertions(+), 111 deletions(-) (limited to 'source/core/array.h') diff --git a/source/core/array.h b/source/core/array.h index b6dbeab07..96508879f 100644 --- a/source/core/array.h +++ b/source/core/array.h @@ -4,142 +4,139 @@ #include "exception.h" #include "array-view.h" -namespace CoreLib +namespace Slang { - namespace Basic + template + class Array { - template - class Array - { - private: - T _buffer[size]; - int _count = 0; - public: - T* begin() const - { - return (T*)_buffer; - } - T* end() const - { - return (T*)_buffer + _count; - } - public: - inline int GetCapacity() const - { - return size; - } - inline int Count() const - { - return _count; - } - inline T & First() const - { - return const_cast(_buffer[0]); - } - inline T & Last() const - { - return const_cast(_buffer[_count - 1]); - } - inline void SetSize(int newSize) - { + private: + T _buffer[size]; + int _count = 0; + public: + T* begin() const + { + return (T*)_buffer; + } + T* end() const + { + return (T*)_buffer + _count; + } + public: + inline int GetCapacity() const + { + return size; + } + inline int Count() const + { + return _count; + } + inline T & First() const + { + return const_cast(_buffer[0]); + } + inline T & Last() const + { + return const_cast(_buffer[_count - 1]); + } + inline void SetSize(int newSize) + { #ifdef _DEBUG - if (newSize > size) - throw IndexOutofRangeException("size too large."); + if (newSize > size) + throw IndexOutofRangeException("size too large."); #endif - _count = newSize; - } - inline void Add(const T & item) - { + _count = newSize; + } + inline void Add(const T & item) + { #ifdef _DEBUG - if (_count == size) - throw IndexOutofRangeException("out of range access to static array."); + if (_count == size) + throw IndexOutofRangeException("out of range access to static array."); #endif - _buffer[_count++] = item; - } - inline void Add(T && item) - { + _buffer[_count++] = item; + } + inline void Add(T && item) + { #ifdef _DEBUG - if (_count == size) - throw IndexOutofRangeException("out of range access to static array."); + if (_count == size) + throw IndexOutofRangeException("out of range access to static array."); #endif - _buffer[_count++] = _Move(item); - } + _buffer[_count++] = _Move(item); + } - inline T & operator [](int id) const - { + inline T & operator [](int id) const + { #if _DEBUG - if (id >= _count || id < 0) - throw IndexOutofRangeException("Operator[]: Index out of Range."); + if (id >= _count || id < 0) + throw IndexOutofRangeException("Operator[]: Index out of Range."); #endif - return ((T*)_buffer)[id]; - } - - inline T* Buffer() const - { - return (T*)_buffer; - } + return ((T*)_buffer)[id]; + } - inline void Clear() - { - _count = 0; - } + inline T* Buffer() const + { + return (T*)_buffer; + } - template - int IndexOf(const T2 & val) const - { - for (int i = 0; i < _count; i++) - { - if (_buffer[i] == val) - return i; - } - return -1; - } + inline void Clear() + { + _count = 0; + } - template - int LastIndexOf(const T2 & val) const + template + int IndexOf(const T2 & val) const + { + for (int i = 0; i < _count; i++) { - for (int i = _count - 1; i >= 0; i--) - { - if (_buffer[i] == val) - return i; - } - return -1; + if (_buffer[i] == val) + return i; } + return -1; + } - inline ArrayView GetArrayView() const - { - return ArrayView((T*)_buffer, _count); - } - inline ArrayView GetArrayView(int start, int count) const + template + int LastIndexOf(const T2 & val) const + { + for (int i = _count - 1; i >= 0; i--) { - return ArrayView((T*)_buffer + start, count); + if (_buffer[i] == val) + return i; } - }; + return -1; + } - template - struct FirstType + inline ArrayView GetArrayView() const { - typedef T type; - }; + return ArrayView((T*)_buffer, _count); + } + inline ArrayView GetArrayView(int start, int count) const + { + return ArrayView((T*)_buffer + start, count); + } + }; + template + struct FirstType + { + typedef T type; + }; - template - void InsertArray(Array &) {} - template - void InsertArray(Array & arr, const T & val, TArgs... args) - { - arr.Add(val); - InsertArray(arr, args...); - } + template + void InsertArray(Array &) {} - template - auto MakeArray(TArgs ...args) -> Array::type, sizeof...(args)> - { - Array::type, sizeof...(args)> rs; - InsertArray(rs, args...); - return rs; - } + template + void InsertArray(Array & arr, const T & val, TArgs... args) + { + arr.Add(val); + InsertArray(arr, args...); + } + + template + auto MakeArray(TArgs ...args) -> Array::type, sizeof...(args)> + { + Array::type, sizeof...(args)> rs; + InsertArray(rs, args...); + return rs; } } -- cgit v1.2.3