[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/github/codeql/codeql-cli-2.11.3/cpp/ql/test/include/string.h [Back]  [Original]

#if !defined(CODEQL_STRING_H)
#define CODEQL_STRING_H

#include "iterator.h"

namespace std
{
	template struct char_traits;

	typedef size_t streamsize;

	template  class allocator {
	public:
		allocator() throw();
		typedef size_t size_type;
	};

	template
	class basic_string {
	public:
		using value_type = charT;
		using reference = value_type&;
		using const_reference = const value_type&;
		typedef typename Allocator::size_type size_type;
		static const size_type npos = -1;

		explicit basic_string(const Allocator& a = Allocator());
		basic_string(const charT* s, const Allocator& a = Allocator());
		template basic_string(InputIterator begin, InputIterator end, const Allocator& a = Allocator());

		const charT* c_str() const;
		charT* data() noexcept;
		size_t length() const;

		typedef std::iterator iterator;
		typedef std::iterator const_iterator;

		iterator begin();
		iterator end();
		const_iterator begin() const;
		const_iterator end() const;
		const_iterator cbegin() const;
		const_iterator cend() const;

		void push_back(charT c);

		const charT& front() const;
		charT& front();
		const charT& back() const;
		charT& back();

		const_reference operator[](size_type pos) const;
		reference operator[](size_type pos);
		const_reference at(size_type n) const;
		reference at(size_type n);
		template basic_string& operator+=(const T& t);
		basic_string& operator+=(const charT* s);
		basic_string& append(const basic_string& str);
		basic_string& append(const charT* s);
		basic_string& append(size_type n, charT c);
		template basic_string& append(InputIterator first, InputIterator last); 
		basic_string& assign(const basic_string& str);
		basic_string& assign(size_type n, charT c);
		template basic_string& assign(InputIterator first, InputIterator last);
		basic_string& insert(size_type pos, const basic_string& str);
		basic_string& insert(size_type pos, size_type n, charT c);
		basic_string& insert(size_type pos, const charT* s);
		iterator insert(const_iterator p, size_type n, charT c);
		template iterator insert(const_iterator p, InputIterator first, InputIterator last); 
		basic_string& replace(size_type pos1, size_type n1, const basic_string& str);
		basic_string& replace(size_type pos1, size_type n1, size_type n2, charT c);
		size_type copy(charT* s, size_type n, size_type pos = 0) const;
		void clear() noexcept;
		basic_string substr(size_type pos = 0, size_type n = npos) const;
		void swap(basic_string& s) noexcept/*(allocator_traits::propagate_on_container_swap::value || allocator_traits::is_always_equal::value)*/;
	};

	template basic_string operator+(const basic_string& lhs, const basic_string& rhs);
	template basic_string operator+(const basic_string& lhs, const charT* rhs);
	template basic_string operator+(const charT* lhs, const basic_string& rhs);

	typedef basic_string string;
}

#endif

Web Proxy Viewer  |  New URL  |  Original Page