WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 |   ...   | 14 | 15 ||

} #ifdef STL_FUNCTION_TMPL_PARTIAL_ORDER template inline bool operator!=(const basic_string<_CharT,_Traits,_Alloc>& x, const basic_string<_CharT,_Traits,_Alloc>& y) { return !(x == y);

} template inline bool operator!=(const _CharT* s, const basic_string<_CharT,_Traits,_Alloc>& y) { return !(s == y);

} template inline bool operator!=(const basic_string<_CharT,_Traits,_Alloc>& x, const _CharT* s) { return !(x == s);

} #endif /* STL_FUNCTION_TMPL_PARTIAL_ORDER */ - 121 - УМП «Автоматизированные методы разработки архитектуры ПО» // Operator< (and also >, <=, and >=).

template inline bool operator<(const basic_string<_CharT,_Traits,_Alloc>& x, const basic_string<_CharT,_Traits,_Alloc>& y) { return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(x.begin(), x.end(), y.begin(), y.end()) < 0;

} template inline bool operator<(const _CharT* s, const basic_string<_CharT,_Traits,_Alloc>& y) { size_t n = _Traits::length(s);

return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(s, s + n, y.begin(), y.end()) < 0;

} template inline bool operator<(const basic_string<_CharT,_Traits,_Alloc>& x, const _CharT* s) { size_t n = _Traits::length(s);

return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(x.begin(), x.end(), s, s + n) < 0;

} #ifdef STL_FUNCTION_TMPL_PARTIAL_ORDER template inline bool operator>(const basic_string<_CharT,_Traits,_Alloc>& x, const basic_string<_CharT,_Traits,_Alloc>& y) { return y < x;

} template inline bool operator>(const _CharT* s, const basic_string<_CharT,_Traits,_Alloc>& y) { return y < s;

} template inline bool operator>(const basic_string<_CharT,_Traits,_Alloc>& x, const _CharT* s) { return s < x;

} template inline bool operator<=(const basic_string<_CharT,_Traits,_Alloc>& x, const basic_string<_CharT,_Traits,_Alloc>& y) { return !(y < x);

} template inline bool operator<=(const _CharT* s, const basic_string<_CharT,_Traits,_Alloc>& y) { return !(y < s);

} template inline bool operator<=(const basic_string<_CharT,_Traits,_Alloc>& x, const _CharT* s) { return !(s < x);

} template inline bool operator>=(const basic_string<_CharT,_Traits,_Alloc>& x, const basic_string<_CharT,_Traits,_Alloc>& y) { return !(x < y);

} template - 122 - УМП «Автоматизированные методы разработки архитектуры ПО» inline bool operator>=(const _CharT* s, const basic_string<_CharT,_Traits,_Alloc>& y) { return !(s < y);

} template inline bool operator>=(const basic_string<_CharT,_Traits,_Alloc>& x, const _CharT* s) { return !(x < s);

} #endif /* STL_FUNCTION_TMPL_PARTIAL_ORDER */ // Swap.

#ifdef STL_FUNCTION_TMPL_PARTIAL_ORDER template inline void swap(basic_string<_CharT,_Traits,_Alloc>& x, basic_string<_CharT,_Traits,_Alloc>& y) { x.swap(y);

} #endif /* STL_FUNCTION_TMPL_PARTIAL_ORDER */ // I/O.

#ifndef STL_USE_NEW_IOSTREAMS STL_END_NAMESPACE #include STL_BEGIN_NAMESPACE #endif /* STL_USE_NEW_IOSTREAMS */ #ifdef STL_USE_NEW_IOSTREAMS template inline bool sgi_string_fill(basic_ostream<_CharT, _Traits>& os, basic_streambuf<_CharT, _Traits>* buf, size_t n) { _CharT f = os.fill();

size_t i;

bool ok = true;

for (i = 0; i < n; i++) ok = ok && !_Traits::eq_int_type(buf->sputc(f), _Traits::eof());

return ok;

} template basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& os, const basic_string<_CharT,_Traits,_Alloc>& s) { typename basic_ostream<_CharT, _Traits>::sentry sentry(os);

bool ok = false;

if (sentry) { ok = true;

size_t n = s.size();

size_t pad_len = 0;

const bool left = (os.flags() & ios::left) != 0;

const size_t w = os.width(0);

basic_streambuf<_CharT, _Traits>* buf = os.rdbuf();

if (w != 0 && n < w) pad_len = w - n;

if (!left) ok = sgi_string_fill(os, buf, pad_len);

ok = ok && buf->sputn(s.data(), streamsize(n)) == streamsize(n);

if (left) ok = ok && sgi_string_fill(os, buf, pad_len);

} - 123 - УМП «Автоматизированные методы разработки архитектуры ПО» if (!ok) os.setstate(ios_base::failbit);

return os;

} template basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& is, basic_string<_CharT,_Traits,_Alloc>& s) { typename basic_istream<_CharT, _Traits>::sentry sentry(is);

if (sentry) { basic_streambuf<_CharT, _Traits>* buf = is.rdbuf();

const ctype<_CharT>& ctype = use_facet >(is.getloc());

s.clear();

size_t n = is.width(0);

if (n == 0) n = static_cast(-1);

else s.reserve(n);

while (n-- > 0) { typename _Traits::int_type c1 = buf->sbumpc();

if (_Traits::eq_int_type(c1, _Traits::eof())) { is.setstate(ios_base::eofbit);

break;

} else { _CharT c = _Traits::to_char_type(c1);

if (ctype.is(ctype<_CharT>::space, c)) { if (_Traits::eq_int_type(buf->sputbackc(c), _Traits::eof())) is.setstate(ios_base::failbit);

break;

} else s.push_back(c);

} } // If we have read no characters, then set failbit.

if (s.size() == 0) is.setstate(ios_base::failbit);

} else is.setstate(ios_base::failbit);

return is;

} template basic_istream<_CharT, _Traits>& getline(istream& is, basic_string<_CharT,_Traits,_Alloc>& s, _CharT delim) { size_t nread = 0;

typename basic_istream<_CharT, _Traits>::sentry sentry(is, true);

if (sentry) { basic_streambuf<_CharT, _Traits>* buf = is.rdbuf();

s.clear();

int c1;

while (nread < s.max_size()) { int c1 = buf->sbumpc();

if (_Traits::eq_int_type(c1, _Traits::eof())) { is.setstate(ios_base::eofbit);

break;

} else { ++nread;

_CharT c = _Traits::to_char_type(c1);

if (!_Traits::eq(c, delim)) s.push_back(c);

else - 124 - УМП «Автоматизированные методы разработки архитектуры ПО» break; // Character is extracted but not appended.

} } } if (nread == 0 || nread >= s.max_size()) is.setstate(ios_base::failbit);

return is;

} template inline basic_istream<_CharT, _Traits>& getline(basic_istream<_CharT, _Traits>& is, basic_string<_CharT,_Traits,_Alloc>& s) { return getline(is, s, '\n');

} #else /* STL_USE_NEW_IOSTREAMS */ inline void sgi_string_fill(ostream& os, streambuf* buf, size_t n) { char f = os.fill();

size_t i;

for (i = 0; i < n; i++) buf->sputc(f);

} template ostream& operator<<(ostream& os, const basic_string<_CharT,_Traits,_Alloc>& s) { streambuf* buf = os.rdbuf();

if (buf) { size_t n = s.size();

size_t pad_len = 0;

const bool left = (os.flags() & ios::left) != 0;

const size_t w = os.width();

if (w > 0) { n = min(w, n);

pad_len = w - n;

} if (!left) sgi_string_fill(os, buf, pad_len);

const size_t nwritten = buf->sputn(s.data(), n);

if (left) sgi_string_fill(os, buf, pad_len);

if (nwritten != n) os.clear(os.rdstate() | ios::failbit);

os.width(0);

} else os.clear(os.rdstate() | ios::badbit);

return os;

} template istream& operator>>(istream& is, basic_string<_CharT,_Traits,_Alloc>& s) { if (!is) return is;

streambuf* buf = is.rdbuf();

if (buf) { #ifdef USLC /* Jochen Schlick '1999 - operator >> modified. Work-around to get the * output buffer flushed (necessary when using * "cout" (without endl or flushing) followed by * "cin >>"...) */ if (is.flags() & ios::skipws) { _CharT c;

- 125 - УМП «Автоматизированные методы разработки архитектуры ПО» do is.get(c);

while (is && isspace(c));

if (is) is.putback(c);

} #else if (is.flags() & ios::skipws) { int c;

do { c = buf->sbumpc();

} while (c != EOF && isspace((unsigned char)c));

if (c == EOF) { is.clear(is.rdstate() | ios::eofbit | ios::failbit);

} else { if (buf->sputbackc(c) == EOF) is.clear(is.rdstate() | ios::failbit);

} } #endif // If we arrive at end of file (or fail for some other reason) while // still discarding whitespace, then we don't try to read the string.

if (is) { s.clear();

size_t n = is.width();

if (n == 0) n = static_cast(-1);

else s.reserve(n);

while (n-- > 0) { int c1 = buf->sbumpc();

if (c1 == EOF) { is.clear(is.rdstate() | ios::eofbit);

break;

} else { _CharT c = _Traits::to_char_type(c1);

if (isspace((unsigned char) c)) { if (buf->sputbackc(c) == EOF) is.clear(is.rdstate() | ios::failbit);

break;

} else s.push_back(c);

} } // If we have read no characters, then set failbit.

if (s.size() == 0) is.clear(is.rdstate() | ios::failbit);

} is.width(0);

} else // We have no streambuf.

is.clear(is.rdstate() | ios::badbit);

return is;

} template istream& getline(istream& is, basic_string<_CharT,_Traits,_Alloc>& s, _CharT delim) { streambuf* buf = is.rdbuf();

if (buf) { size_t nread = 0;

if (is) { s.clear();

while (nread < s.max_size()) { int c1 = buf->sbumpc();

- 126 - УМП «Автоматизированные методы разработки архитектуры ПО» if (c1 == EOF) { is.clear(is.rdstate() | ios::eofbit);

break;

} else { ++nread;

_CharT c = _Traits::to_char_type(c1);

if (!_Traits::eq(c, delim)) s.push_back(c);

else break; // Character is extracted but not appended.

} } } if (nread == 0 || nread >= s.max_size()) is.clear(is.rdstate() | ios::failbit);

} else is.clear(is.rdstate() | ios::badbit);

return is;

} template inline istream& getline(istream& is, basic_string<_CharT,_Traits,_Alloc>& s) { return getline(is, s, '\n');

} #endif /* STL_USE_NEW_IOSTREAMS */ template void _S_string_copy(const basic_string<_CharT,_Traits,_Alloc>& s, _CharT* buf, size_t n) { if (n > 0) { n = min(n - 1, s.size());

copy(s.begin(), s.begin() + n, buf);

_Traits::assign(buf[n], basic_string<_CharT,_Traits,_Alloc>::_M_null());

} } inline const char* get_c_string(const string& s) { return s.c_str(); } // ------------------------------------------------------------ // Typedefs #if defined(sgi) && !defined(GNUC) && (_MIPS_SIM != _MIPS_SIM_ABI32) #pragma reset woff #pragma reset woff #endif STL_END_NAMESPACE #include STL_BEGIN_NAMESPACE template size_t stl_string_hash(const basic_string<_CharT,_Traits,_Alloc>& s) { unsigned long h = 0;

for (basic_string<_CharT,_Traits,_Alloc>::const_iterator i = s.begin();

i != s.end();

++i) h = 5*h + *i;

return size_t(h);

} #ifdef STL_CLASS_PARTIAL_SPECIALIZATION template struct hash > { size_t operator()(const basic_string<_CharT,_Traits,_Alloc>& s) const { return stl_string_hash(s); } };

- 127 - УМП «Автоматизированные методы разработки архитектуры ПО» #else STL_TEMPLATE_NULL struct hash { size_t operator()(const string& s) const { return stl_string_hash(s); } };

STL_TEMPLATE_NULL struct hash { size_t operator()(const wstring& s) const { return stl_string_hash(s); } };

#endif /* STL_CLASS_PARTIAL_SPECIALIZATION */ STL_END_NAMESPACE #endif /* SGI_STL_STRING */ // Local Variables:

// mode:C++ // End:

- 128 - УМП «Автоматизированные методы разработки архитектуры ПО» Предметный указатель. S.NET, 31, 39 set, 53, 58, 59, 60, 63, 98, 124, STL, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 98, 99, 100, 101, 102, 103, 105, 106, C 107, 109, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 125, 127, C++, 12, 16, 42, 43, 50, 51, 52, 54, 55, 56, 57, 59, string, 53, 54, 55, 62, 63, 98, 99, 101, 102, 103, 60, 61, 62, 98, 104, 105, 106, 107, 108, 109, 110, 111, 112, CAD, 29, 113, 114, 115, 116, 117, 118, 119, 120, 121, CASE, 12, 13, 29, 41, 42, 43, 44, 122, 123, 124, 125, 126, 127, CASE-систем, 12, 13, SWITCH, 19, 20, 24, CASE-системы, 12, SWITCH-технология, CASE-средства, CIM, 34, Computer-Aided Software/System U Engineering, CORBA, 30, 31, 33 UML, 5, 19, 24, 25, 29, 30, 33, 34, 35, 38, 39, 42, 47, 66, 67, 69, 70, 72, 73, 74, 75, 76, 77, 78, 81, 85, G Unified Modeling Language, 29, UniMod, 19, 20, 23, 24, Generative programming, Grady Booch, V I vector, 53, 54, 55, 56, 60, 62, IBM, 6, 29, Intentional Programming, А Ivar Hjalmar Jacobson, Автоматизация архитектурного проектирования, 29, J Автоматическая, автоматное программирование, James Rumbaugh, Автоматное программирование, Айзенекер, 5, 13, 15, 16, M Алгоритм, архитектор, 6, 9, map, 53, 55, 56, 57, 58, 59, архитектура, 4, 6, 13, 15, 33, 34, 49, MDA, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, Архитектура на базе моделей, Meta Object Facility, Архитектура ПО, 4, Meta-Object Facility, архитектура программного обеспечения, Model Driven Architecture, 29, 32, 4, 6, 13, MOF, 30, Архитектура с высокой степенью гибкости, multimap, 53, 58, 59, multiset, 53, 60, архитектурное моделирование, Архитектурный проект, Ассоциации, 79, 80, 82, O Атрибут, Object Management Group, 29 атрибуты, 71, 72, 78, 82, 88, OMG, 29, 30, 31, Б P Бьерн Страуструп, PIM, 30, 31, 32, 33, 34, 35, 36, 37, 38, Platform Independent Model, 30, Г Platform Specific Model, 30, PSM, 30, 31, 32, 35, 36, 37, 38, Генеративное, 9, 11, генеративное программирование, генератор, 12, 32, R граф переходов, 23, Rational Rose, 42, 43, 44, - 129 - УМП «Автоматизированные методы разработки архитектуры ПО» проектирование архитектуры, З Проектирование ПО, Проектирование программного зависимости, 29, 38, 39, 40, 70, 77, 78, 81, 82, обеспечения, 86, 87, 88, 89, Р И Реализация прецедента, Интенциальное программирование, Родовая архитектура, интенциональное, Роль, Итератор, итераторы, С К Сборка, сборки моделей, класс, 50, 54, 60, Сергей Дмитриев, Классы, 69, 73, 77, Симони, 17, код для повторного использования, система IP, компонент, 6, 47, Скотт Майерс, 58, 62, компоненты, 12, 14, 15, 49, 50, 69, 73, 75, 85, Скотт Мейерс, 86, 87, 89, 91, словарь предметной области, 81, Контейнер, 53, 55, Степанов, Кооперациии, Структуры, Корбюзье, сущности, 25, 68, 69, 70, 71, 74, 75, 76, 77, 86, Кратность, М Т Механизмы, Том Де Марко, Михаил Ксензов, моделей предметной области, модели предметной области, 5, 6, У Моделирование, 67, 69, 72, 88, 93, 94, Узел, О Ф Обобщение, образцов, 5, 13, 15, Фаулер, 9, 17, Обязанности, Олег Ремизов, 57, 58, 59, Ч операции, 7, 39, 57, 72, 73, 74, 78, 81, 82, 83, 88, 89, 90, 92, 94, Чарнецки, 5, 11, 13, 15, 16, П Ш паттерн проектирования, Шалыто, 19, паттерны архитектурного рефакторинга, Питер Илес, 6, платформ, 31, 32, 35 Э Поведение, Элементы архитектуры, повторное использование кода, порождающего программирования, 7, 11, Я Порождающее программирование, 5, 11, Якобсон, 29, - 130 - УМП «Автоматизированные методы разработки архитектуры ПО» Литература [1] Чарнецки К., Айзенекер У. Порождающее программирование:

методы, инструменты, применение. СПб.: Питер, 2005.

Pages:     | 1 |   ...   | 14 | 15 ||






















© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.