Базовые классы Juce и общие выводы
Содержание:
1.Введение (Вы читаете данный раздел);
2. Контейнеры;
3. Многопоточность;
4. Проекты, использующие Juce;
5. Впечатления и выводы.
Библиотека Juce создавалась по принципу максимальной самодостаточности, поэтому в ней не используется стандартная библиотека С++ и STL. Причины такого радикализма понять довольно сложно, поскольку контейнерам Juce очень далеко до гибкости и универсальности STL.
Как бы то ни было, познакомимся с некоторыми базовыми классами Juce.
В Juce есть несколько полезных математических функций и макросов, определенных в файле juce_MathsFunctions.h. Например, jmax() и jmin() возвращают меньшее и большее значения пары чисел, jlimit() - переводит переданное число в заданный диапазон, juce_isfinite() - определяет конечность числа. Значения опре-делений int8, int16 и т.п. и констант double_Pi и float_Pi очевидны.
Для генерации случайных чисел предусмотрен класс Random. Он не такой гибкий, как, например, boost::random, но намного проще в использовании. Методы nextFloat() и nextDouble() возвращают случайное число в диапазоне от 0 до 1, а метод nextlnt(max) -целое случайное число от нуля до max.
Строки реализуются очень гибким и мощным классом String с полной поддержкой Unicode. Создать строку можно из обычного строкового литерала:
Все работает правильно, пока мы не попытаемся создать строку с русскими буквами:
Проблема в том, что строка интерпретируется в обычной кодировке ASCII, а нам нужно преобразовать ее в Unicode для правильного отображения. Для этого используется макрос T():
Обертку «T()» важно использовать везде, где могут встретится кириллические или любые другие национальные символы. Преобразование числа в строку делается тривиально:
В случае вещественного числа вторым параметром можно передать число десятичных знаков. Для обратного преобразование строки в число предусмотрен целый ряд методов. Наиболее часто используемые - getIntValue(), getLargeIntValue(), getDoubleValue() и getFloatValue(), названия которых говорят сами за себя.
Для преобразования строк и совместимости со стандартной библиотекой С++ можно использовать метод «toCString()», возвращающий обычную строку, оканчивающуюся нулем. Для конкатенации строк можно использовать операторы «+» и «+=», а также метод «append()». Существует также специальный класс Concatenator для конкатенации большого количества длинных строк, который резко повышает производительность этой операции.
Предусмотрен целый ряд методов для поиска и замены текста в строке. Например, startsWith(str) и endsWith(str) ищут вхождения подстроки в начале или конце данной строки, а indexOfWholeWord(str) возвращает индекс переданного слова, отделенного пробельными символами. Метод matchesWildcard() производит простой поиск с помощью шаблонов shell типа «text*» или «file?2.*». Все эти функции имеют варианты, которые игнорируют регистр символов - например, endsWithIgnoreCase().
Такого многообразия методов, какое предоставляет класс String, нет, пожалуй, ни в одном другом тулките. Полный их список имеется в документации (http://www.rawmaterialsoftware.com/ juce/api/classString.html). Тем не менее, в Juce нет встроенных регулярных выражений и для этой цели нужно использовать внешнюю библиотеку.
Библиотека Juce позволяет реализовать множество разнообразных программных решений, но с ее помощью невозможно выполнить Анализ эффективности (http://www.comagic.ru/)! Для этого Вам потребуется помощи высококвалифицированных специалистов. Их Вы сможете найти в компании CoMagic!
1.
2. Контейнеры;
3. Многопоточность;
4. Проекты, использующие Juce;
5. Впечатления и выводы.
Библиотека Juce создавалась по принципу максимальной самодостаточности, поэтому в ней не используется стандартная библиотека С++ и STL. Причины такого радикализма понять довольно сложно, поскольку контейнерам Juce очень далеко до гибкости и универсальности STL.
Как бы то ни было, познакомимся с некоторыми базовыми классами Juce.
Математика
В Juce есть несколько полезных математических функций и макросов, определенных в файле juce_MathsFunctions.h. Например, jmax() и jmin() возвращают меньшее и большее значения пары чисел, jlimit() - переводит переданное число в заданный диапазон, juce_isfinite() - определяет конечность числа. Значения опре-делений int8, int16 и т.п. и констант double_Pi и float_Pi очевидны.
Для генерации случайных чисел предусмотрен класс Random. Он не такой гибкий, как, например, boost::random, но намного проще в использовании. Методы nextFloat() и nextDouble() возвращают случайное число в диапазоне от 0 до 1, а метод nextlnt(max) -целое случайное число от нуля до max.
Строки
Строки реализуются очень гибким и мощным классом String с полной поддержкой Unicode. Создать строку можно из обычного строкового литерала:
String s2("String in English");
Все работает правильно, пока мы не попытаемся создать строку с русскими буквами:
String s0("Строка текста"); // Абракадабра!
Проблема в том, что строка интерпретируется в обычной кодировке ASCII, а нам нужно преобразовать ее в Unicode для правильного отображения. Для этого используется макрос T():
String s1(T("Стpoка текста")); // Правильно - конвертация в юникод
Обертку «T()» важно использовать везде, где могут встретится кириллические или любые другие национальные символы. Преобразование числа в строку делается тривиально:
String s3( 42 ); String s4( 3.14159, 3);
В случае вещественного числа вторым параметром можно передать число десятичных знаков. Для обратного преобразование строки в число предусмотрен целый ряд методов. Наиболее часто используемые - getIntValue(), getLargeIntValue(), getDoubleValue() и getFloatValue(), названия которых говорят сами за себя.
Для преобразования строк и совместимости со стандартной библиотекой С++ можно использовать метод «toCString()», возвращающий обычную строку, оканчивающуюся нулем. Для конкатенации строк можно использовать операторы «+» и «+=», а также метод «append()». Существует также специальный класс Concatenator для конкатенации большого количества длинных строк, который резко повышает производительность этой операции.
Предусмотрен целый ряд методов для поиска и замены текста в строке. Например, startsWith(str) и endsWith(str) ищут вхождения подстроки в начале или конце данной строки, а indexOfWholeWord(str) возвращает индекс переданного слова, отделенного пробельными символами. Метод matchesWildcard() производит простой поиск с помощью шаблонов shell типа «text*» или «file?2.*». Все эти функции имеют варианты, которые игнорируют регистр символов - например, endsWithIgnoreCase().
Такого многообразия методов, какое предоставляет класс String, нет, пожалуй, ни в одном другом тулките. Полный их список имеется в документации (http://www.rawmaterialsoftware.com/ juce/api/classString.html). Тем не менее, в Juce нет встроенных регулярных выражений и для этой цели нужно использовать внешнюю библиотеку.
Array arr;
arr.add(T("стpoка 1"));
arr.add(T("стpoка 2"));
arr.insert(1,s1);
arr.remove(0);
arr.add(T("стpoка 1"));
arr.add(T("стpoка 2"));
arr.insert(1,s1);
arr.remove(0);
Библиотека Juce позволяет реализовать множество разнообразных программных решений, но с ее помощью невозможно выполнить Анализ эффективности (http://www.comagic.ru/)! Для этого Вам потребуется помощи высококвалифицированных специалистов. Их Вы сможете найти в компании CoMagic!