Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
language: cpp
compiler:
- gcc
- clang
matrix:
include:
- os: linux
compiler: gcc
- os: osx
compiler: clang
before_script:
- mkdir ../build
- cd ../build
script:
- cmake ../mp2-lab1-set
- make -j
- cd ./bin/
- ./test_set --gtest_list_tests
- ./bin/test_set --gtest_list_tests
notifications:
email: false
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8)
set(PROJECT_NAME set)
project(${PROJECT_NAME})

# TODO(Kornyakov): not sure if these lines are needed
# TODO(Korniakov): not sure if these lines are needed
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,4 @@ __Цель данной работы__ — разработка структу
[youtube-playlist]: https://www.youtube.com/playlist?list=PLSzOhsr5tmhrgV7u7CSzX4Ki1a9r0AKzV
[slides]: https://github.com/UNN-ITMM-Software/mp2-lab1-set/tree/master/docs/slides
[upstream]: https://github.com/UNN-ITMM-Software/mp2-lab1-set
[gitter]: https://gitter.im/UNN-ITMM-Software/mp2-lab1-set
[gitter]: https://gitter.im/UNN-VMK-Software/mp2-lab1-set
11 changes: 11 additions & 0 deletions include/AdditionalFunctions.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// ����, ���, ���� "������ ����������������-2", �++, ���
// �������������� ������� ��� ����������

#ifndef __ADDITIONALFUNCTIONS_H__
#define __ADDITIONALFUNCTIONS__

#include <iostream>

size_t mylog2(size_t n); // https://stackoverflow.com/a/994647

#endif
55 changes: 33 additions & 22 deletions include/tbitfield.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,31 +20,41 @@ class TBitField
int BitLen; // длина битового поля - макс. к-во битов
TELEM *pMem; // память для представления битового поля
int MemLen; // к-во эл-тов Мем для представления бит.поля

static size_t GET_INDEX_CONST;
static unsigned int mylog2(unsigned int val) {
if (val == 0) return UINT_MAX;
if (val == 1) return 0;
unsigned int ret = 0;
while (val > 1) {
val >>= 1;
ret++;
}
return ret;
}
// методы реализации
int GetMemIndex(const int n) const; // индекс в pМем для бита n (#О2)
TELEM GetMemMask (const int n) const; // битовая маска для бита n (#О3)
TELEM GetMemMask(const int n) const; // битовая маска для бита n (#О3)
public:
TBitField(int len); // (#О1)
TBitField(const TBitField &bf); // (#П1)
~TBitField(); // (#С)

// доступ к битам
int GetLength(void) const; // получить длину (к-во битов) (#О)
void SetBit(const int n); // установить бит (#О4)
void ClrBit(const int n); // очистить бит (#П2)
int GetBit(const int n) const; // получить значение бита (#Л1)

// битовые операции
int operator==(const TBitField &bf) const; // сравнение (#О5)
int operator!=(const TBitField &bf) const; // сравнение
TBitField& operator=(const TBitField &bf); // присваивание (#П3)
TBitField operator|(const TBitField &bf); // операция "или" (#О6)
TBitField operator&(const TBitField &bf); // операция "и" (#Л2)
TBitField operator~(void); // отрицание (#С)

friend istream &operator>>(istream &istr, TBitField &bf); // (#О7)
friend ostream &operator<<(ostream &ostr, const TBitField &bf); // (#П4)
TBitField(int len); // (#О1)
TBitField(const TBitField& bf); // (#П1)
~TBitField(); // (#С)

// доступ к битам
int GetLength(void) const; // получить длину (к-во битов) (#О)
void SetBit(const int n); // установить бит (#О4)
void ClrBit(const int n); // очистить бит (#П2)
int GetBit(const int n) const; // получить значение бита (#Л1)

// битовые операции
int operator==(const TBitField& bf) const; // сравнение (#О5)
int operator!=(const TBitField& bf) const; // сравнение
TBitField& operator=(const TBitField& bf); // присваивание (#П3)
TBitField operator|(const TBitField& bf); // операция "или" (#О6)
TBitField operator&(const TBitField& bf); // операция "и" (#Л2)
TBitField operator~(void); // отрицание (#С)

friend istream& operator>>(istream& istr, TBitField& bf); // (#О7)
friend ostream& operator<<(ostream& ostr, const TBitField& bf); // (#П4)
};
// Структура хранения битового поля
// бит.поле - набор битов с номерами от 0 до BitLen
Expand All @@ -53,3 +63,4 @@ class TBitField
// О8 Л2 П4 С2

#endif

1 change: 1 addition & 0 deletions samples/sample_prime_numbers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
// #define USE_SET // Использовать класс TSet,
// закоментировать, чтобы использовать битовое поле


#ifndef USE_SET // Использовать класс TBitField

#include "tbitfield.h"
Expand Down
5 changes: 3 additions & 2 deletions sln/vc10/bitfield/bitfield.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
Expand Down Expand Up @@ -85,6 +87,5 @@
<ClInclude Include="..\..\..\include\tset.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ImportGroup Label="ExtensionTargets" />
</Project>
5 changes: 3 additions & 2 deletions sln/vc10/gtest/gtest.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
Expand Down Expand Up @@ -81,6 +83,5 @@
<ClInclude Include="..\..\..\gtest\gtest.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ImportGroup Label="ExtensionTargets" />
</Project>
5 changes: 3 additions & 2 deletions sln/vc10/sample_prime_numbers/sample_prime_numbers.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
Expand Down Expand Up @@ -105,6 +107,5 @@
<ClCompile Include="..\..\..\samples\sample_prime_numbers.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ImportGroup Label="ExtensionTargets" />
</Project>
5 changes: 3 additions & 2 deletions sln/vc10/test_bitfield/test_bitfield.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
Expand Down Expand Up @@ -112,6 +114,5 @@
<ClCompile Include="..\..\..\test\test_tset.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ImportGroup Label="ExtensionTargets" />
</Project>
17 changes: 11 additions & 6 deletions sln/vc9/bitfield.sln
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest", "gtest\gtest.vcproj", "{60932AFC-7808-48B7-B3BF-F2BC151C0065}"
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18
VisualStudioVersion = 18.0.11222.15 d18.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest", "gtest\gtest.vcxproj", "{60932AFC-7808-48B7-B3BF-F2BC151C0065}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bitfield", "bitfield\bitfield.vcproj", "{A76282B3-4276-4945-9AF2-3AC68111A828}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bitfield", "bitfield\bitfield.vcxproj", "{A76282B3-4276-4945-9AF2-3AC68111A828}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_bitfield", "test_bitfield\test_bitfield.vcproj", "{C650C93E-F0A7-4235-9F5F-0DCE78609BFB}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_bitfield", "test_bitfield\test_bitfield.vcxproj", "{C650C93E-F0A7-4235-9F5F-0DCE78609BFB}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample_prime_numbers", "sample_prime_numbers\sample_prime_numbers.vcproj", "{5D0218F2-E502-414F-BA66-9E76B2785178}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample_prime_numbers", "sample_prime_numbers\sample_prime_numbers.vcxproj", "{5D0218F2-E502-414F-BA66-9E76B2785178}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -35,4 +37,7 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1971A87A-F536-4FA7-8CBA-F3B93566B01E}
EndGlobalSection
EndGlobal
89 changes: 89 additions & 0 deletions sln/vc9/bitfield/bitfield.vcxproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>18.0</VCProjectVersion>
<ProjectGuid>{A76282B3-4276-4945-9AF2-3AC68111A828}</ProjectGuid>
<RootNamespace>bitfield</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v145</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v145</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>18.0.11123.170</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\tbitfield.cpp" />
<ClCompile Include="..\..\..\src\tset.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\include\tbitfield.h" />
<ClInclude Include="..\..\..\include\tset.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
29 changes: 29 additions & 0 deletions sln/vc9/bitfield/bitfield.vcxproj.filters
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\tbitfield.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\tset.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\include\tbitfield.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\include\tset.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
Loading