Rtos API example
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "test_env.h" 00002 00003 #include <algorithm> 00004 #include <string> 00005 #include <vector> 00006 #include <queue> 00007 #include <map> 00008 #include <math.h> 00009 00010 #define BUFFER_SIZE 128 00011 #define TABLE_SIZE(TAB) (sizeof(TAB) / sizeof(TAB[0])) 00012 00013 #define NEGATIVE_INTEGERS -32768,-3214,-999,-100,-1,0,1,4231,999,4123,32760,99999 00014 #define POSITIVE_INTEGERS 32768,3214,999,100,1,0,1,4231,999,4123,32760,99999 00015 #define FLOATS 0.002,0.92430,15.91320,791.77368,6208.2,25719.4952,426815.982588,6429271.046,42468024.93,212006462.910 00016 #define FLOATS_STR "0.002","0.92430","15.91320","791.77368","6208.2","25719.4952","426815.982588","6429271.046","42468024.93","212006462.910" 00017 00018 template <class T, class F> 00019 void BubbleSort(T& array, size_t array_size, F functor) 00020 { 00021 bool flag = true; 00022 size_t numLength = array_size; 00023 for(size_t i = 1; (i <= numLength) && flag; i++) { 00024 flag = false; 00025 for (size_t j = 0; j < (numLength - 1); j++) { 00026 if (functor(array[j+1], array[j])) { 00027 int temp = array[j]; 00028 array[j] = array[j + 1]; 00029 array[j+1] = temp; 00030 flag = true; 00031 } 00032 } 00033 } 00034 } 00035 00036 struct printInt { 00037 void operator()(int i) { 00038 printf("%d ", i); 00039 } 00040 }; 00041 00042 struct printFloat { 00043 void operator()(float f) { 00044 printf("%f ", f); 00045 } 00046 }; 00047 00048 struct printString { 00049 void operator()(char* s) { 00050 printf("%s ", s); 00051 } 00052 }; 00053 00054 struct greaterAbs { 00055 bool operator()(int a, int b) { 00056 return abs(a) > abs(b); 00057 } 00058 }; 00059 00060 00061 int main() 00062 { 00063 int p_integers[] = {POSITIVE_INTEGERS}; 00064 int n_integers[] = {NEGATIVE_INTEGERS}; 00065 float floats[] = {FLOATS}; 00066 bool result = true; 00067 00068 { 00069 std::vector<int> v_pints(p_integers, p_integers + TABLE_SIZE(p_integers)); 00070 bool equal_result = std::equal(v_pints.begin(), v_pints.end(), p_integers); 00071 result = result && equal_result; 00072 printf("[%s] Fill vector with data\r\n", equal_result ? "OK" : "FAIL"); 00073 } 00074 00075 { 00076 char* floats_str[] = {FLOATS_STR}; 00077 float floats_transform[TABLE_SIZE(floats_str)] = {0.0}; 00078 std::transform(floats_str, floats_str + TABLE_SIZE(floats_str), floats_transform, atof); 00079 bool equal_result = std::equal(floats_transform, floats_transform + TABLE_SIZE(floats_transform), floats); 00080 result = result && equal_result; 00081 printf("[%s] Transform float strings\r\n", equal_result ? "OK" : "FAIL"); 00082 00083 std::for_each(floats_str, floats_str + TABLE_SIZE(floats_str), printString()); 00084 printf("\r\n"); 00085 std::for_each(floats_transform, floats_transform + TABLE_SIZE(floats_transform), printFloat()); 00086 printf("\r\n"); 00087 } 00088 00089 { 00090 std::vector<int> v_nints_1(n_integers, n_integers + TABLE_SIZE(n_integers)); 00091 std::vector<int> v_nints_2(n_integers, n_integers + TABLE_SIZE(n_integers)); 00092 { 00093 BubbleSort(v_nints_1, v_nints_1.size(), std::greater<int>()); 00094 std::sort(v_nints_2.begin(), v_nints_2.end(), std::greater<int>()); 00095 bool equal_result = std::equal(v_nints_1.begin(), v_nints_1.end(), v_nints_2.begin()); 00096 result = result && equal_result; 00097 printf("[%s] Sort integers\r\n", equal_result ? "OK" : "FAIL"); 00098 00099 std::for_each(v_nints_1.begin(), v_nints_1.end(), printInt()); 00100 printf("\r\n"); 00101 std::for_each(v_nints_2.begin(), v_nints_2.end(), printInt()); 00102 printf("\r\n"); 00103 } 00104 00105 { 00106 BubbleSort(v_nints_1, v_nints_1.size(), greaterAbs()); 00107 std::sort(v_nints_2.begin(), v_nints_2.end(), greaterAbs()); 00108 bool equal_result = std::equal(v_nints_1.begin(), v_nints_1.end(), v_nints_2.begin()); 00109 result = result && equal_result; 00110 printf("[%s] Sort integers\r\n", equal_result ? "OK" : "FAIL"); 00111 00112 std::for_each(v_nints_1.begin(), v_nints_1.end(), printInt()); 00113 printf("\r\n"); 00114 std::for_each(v_nints_2.begin(), v_nints_2.end(), printInt()); 00115 printf("\r\n"); 00116 } 00117 } 00118 00119 notify_completion(result); 00120 return 0; 00121 }
Generated on Sun Jul 17 2022 08:25:26 by
1.7.2