Showing the changes to src (5 of 6 files). Show all
Unified · Split
| @@ -970,6 +970,11 @@ t_CKBOOL init_class_array( Chuck_Env * env, Chuck_Type * type ) · 969 unmodified lines | ||
| 970 | 970 | func->add_arg( "string[]", "keys" ); |
| 971 | 971 | func->doc = "return all keys found in associative array in keys"; |
| 972 | 972 | if( !type_engine_import_mfun( env, func ) ) goto error; |
| 973 | + | |
| 974 | + // (1.4.2.1 azaday) add reverse() | |
| 975 | + func = make_new_mfun( "void", "reverse", array_reverse ); | |
| 976 | + func->doc = "reverses the array in-place"; | |
| 977 | + if( !type_engine_import_mfun( env, func ) ) goto error; | |
| 973 | 978 | |
| 974 | 979 | // note 1.4.1.0: in the future, should deprecate and encourage programmer |
| 975 | 980 | // to explicitly use .size() OR .capacity(), depending on the context |
| @@ -2782,6 +2787,13 @@ CK_DLL_MFUN( array_get_keys ) · 1806 unmodified lines | ||
| 2782 | 2787 | } |
| 2783 | 2788 | } |
| 2784 | 2789 | |
| 2790 | +// 1.4.2.1 azaday (added) array.reverse() | |
| 2791 | +CK_DLL_MFUN( array_reverse ) | |
| 2792 | +{ | |
| 2793 | + Chuck_Array * array = (Chuck_Array *)SELF; | |
| 2794 | + array->reverse(); | |
| 2795 | +} | |
| 2796 | + | |
| 2785 | 2797 | |
| 2786 | 2798 | |
| 2787 | 2799 | //----------------------------------------------------------------------------- |
| @@ -190,6 +190,7 @@ CK_DLL_MFUN( array_clear ); · 189 unmodified lines | ||
| 190 | 190 | CK_DLL_MFUN( array_reset ); |
| 191 | 191 | CK_DLL_MFUN( array_zero ); |
| 192 | 192 | CK_DLL_MFUN( array_get_keys ); |
| 193 | +CK_DLL_MFUN( array_reverse ); | |
| 193 | 194 | |
| 194 | 195 | |
| 195 | 196 | //----------------------------------------------------------------------------- |
| @@ -38,6 +38,7 @@ · 37 unmodified lines | ||
| 38 | 38 | #include "chuck_errmsg.h" |
| 39 | 39 | #include "chuck_dl.h" |
| 40 | 40 | |
| 41 | +#include <algorithm> | |
| 41 | 42 | #include <iostream> |
| 42 | 43 | #include <sstream> |
| 43 | 44 | #include <iomanip> |
| @@ -699,6 +700,18 @@ void Chuck_Array4::get_keys( std::vector<std::string> & keys ) · 655 unmodified lines | ||
| 699 | 700 | |
| 700 | 701 | |
| 701 | 702 | |
| 703 | +//----------------------------------------------------------------------------- | |
| 704 | +// name: reverse() | |
| 705 | +// desc: reverses array in-place | |
| 706 | +//----------------------------------------------------------------------------- | |
| 707 | +void Chuck_Array4::reverse( ) | |
| 708 | +{ | |
| 709 | + std::reverse(m_vector.begin(), m_vector.end()); | |
| 710 | +} | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 702 | 715 | //----------------------------------------------------------------------------- |
| 703 | 716 | // name: back() |
| 704 | 717 | // desc: ... |
| @@ -1087,6 +1100,18 @@ void Chuck_Array8::get_keys( std::vector<std::string> & keys ) · 382 unmodified lines | ||
| 1087 | 1100 | |
| 1088 | 1101 | |
| 1089 | 1102 | |
| 1103 | +//----------------------------------------------------------------------------- | |
| 1104 | +// name: reverse() | |
| 1105 | +// desc: reverses array in-place | |
| 1106 | +//----------------------------------------------------------------------------- | |
| 1107 | +void Chuck_Array8::reverse( ) | |
| 1108 | +{ | |
| 1109 | + std::reverse(m_vector.begin(), m_vector.end()); | |
| 1110 | +} | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1090 | 1115 | //----------------------------------------------------------------------------- |
| 1091 | 1116 | // name: back() |
| 1092 | 1117 | // desc: ... |
| @@ -1436,6 +1461,18 @@ void Chuck_Array16::get_keys( std::vector<std::string> & keys ) · 343 unmodified lines | ||
| 1436 | 1461 | |
| 1437 | 1462 | |
| 1438 | 1463 | |
| 1464 | +//----------------------------------------------------------------------------- | |
| 1465 | +// name: reverse() | |
| 1466 | +// desc: reverses array in-place | |
| 1467 | +//----------------------------------------------------------------------------- | |
| 1468 | +void Chuck_Array16::reverse( ) | |
| 1469 | +{ | |
| 1470 | + std::reverse(m_vector.begin(), m_vector.end()); | |
| 1471 | +} | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
| 1475 | + | |
| 1439 | 1476 | //----------------------------------------------------------------------------- |
| 1440 | 1477 | // name: back() |
| 1441 | 1478 | // desc: ... |
| @@ -1875,6 +1912,18 @@ void Chuck_Array24::get_keys( std::vector<std::string> & keys ) · 433 unmodified lines | ||
| 1875 | 1912 | |
| 1876 | 1913 | |
| 1877 | 1914 | |
| 1915 | +//----------------------------------------------------------------------------- | |
| 1916 | +// name: reverse() | |
| 1917 | +// desc: reverses array in-place | |
| 1918 | +//----------------------------------------------------------------------------- | |
| 1919 | +void Chuck_Array24::reverse( ) | |
| 1920 | +{ | |
| 1921 | + std::reverse(m_vector.begin(), m_vector.end()); | |
| 1922 | +} | |
| 1923 | + | |
| 1924 | + | |
| 1925 | + | |
| 1926 | + | |
| 1878 | 1927 | //----------------------------------------------------------------------------- |
| 1879 | 1928 | // name: Chuck_Array32() |
| 1880 | 1929 | // desc: constructor |
| @@ -2211,6 +2260,17 @@ void Chuck_Array32::get_keys( std::vector<std::string> & keys ) · 330 unmodified lines | ||
| 2211 | 2260 | |
| 2212 | 2261 | |
| 2213 | 2262 | |
| 2263 | +//----------------------------------------------------------------------------- | |
| 2264 | +// name: reverse() | |
| 2265 | +// desc: reverses array in-place | |
| 2266 | +//----------------------------------------------------------------------------- | |
| 2267 | +void Chuck_Array32::reverse( ) | |
| 2268 | +{ | |
| 2269 | + std::reverse(m_vector.begin(), m_vector.end()); | |
| 2270 | +} | |
| 2271 | + | |
| 2272 | + | |
| 2273 | + | |
| 2214 | 2274 | |
| 2215 | 2275 | // static |
| 2216 | 2276 | t_CKUINT Chuck_Event::our_can_wait = 0; |
| @@ -234,6 +234,8 @@ public: · 233 unmodified lines | ||
| 234 | 234 | virtual void zero() = 0; // zero (all) |
| 235 | 235 | // get map keys | added (1.4.2.0) nshaheed |
| 236 | 236 | virtual void get_keys( std::vector<std::string> & keys ) = 0; |
| 237 | + // reverse array order | added (1.4.2.0) azaday | |
| 238 | + virtual void reverse() = 0; | |
| 237 | 239 | |
| 238 | 240 | Chuck_Type * m_array_type; |
| 239 | 241 | }; |
| @@ -276,6 +278,8 @@ public: · 36 unmodified lines | ||
| 276 | 278 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY4_DATAKIND; } |
| 277 | 279 | // get map keys | added (1.4.2.0) nshaheed |
| 278 | 280 | virtual void get_keys( std::vector<std::string> & keys ); |
| 281 | + // reverse array order | added (1.4.2.0) azaday | |
| 282 | + virtual void reverse(); | |
| 279 | 283 | |
| 280 | 284 | public: |
| 281 | 285 | std::vector<t_CKUINT> m_vector; |
| @@ -326,6 +330,8 @@ public: · 44 unmodified lines | ||
| 326 | 330 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY8_DATAKIND; } |
| 327 | 331 | // get map keys | added (1.4.2.0) nshaheed |
| 328 | 332 | virtual void get_keys( std::vector<std::string> & keys ); |
| 333 | + // reverse array order | added (1.4.2.0) azaday | |
| 334 | + virtual void reverse(); | |
| 329 | 335 | |
| 330 | 336 | public: |
| 331 | 337 | std::vector<t_CKFLOAT> m_vector; |
| @@ -372,6 +378,8 @@ public: · 40 unmodified lines | ||
| 372 | 378 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY16_DATAKIND; } |
| 373 | 379 | // get map keys | added (1.4.2.0) nshaheed |
| 374 | 380 | virtual void get_keys( std::vector<std::string> & keys ); |
| 381 | + // reverse array order | added (1.4.2.0) azaday | |
| 382 | + virtual void reverse(); | |
| 375 | 383 | |
| 376 | 384 | public: |
| 377 | 385 | std::vector<t_CKCOMPLEX> m_vector; |
| @@ -418,6 +426,8 @@ public: · 40 unmodified lines | ||
| 418 | 426 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY24_DATAKIND; } |
| 419 | 427 | // get map keys | added (1.4.2.0) nshaheed |
| 420 | 428 | virtual void get_keys( std::vector<std::string> & keys ); |
| 429 | + // reverse array order | added (1.4.2.0) azaday | |
| 430 | + virtual void reverse(); | |
| 421 | 431 | |
| 422 | 432 | public: |
| 423 | 433 | std::vector<t_CKVEC3> m_vector; |
| @@ -462,6 +472,8 @@ public: · 38 unmodified lines | ||
| 462 | 472 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY32_DATAKIND; } |
| 463 | 473 | // get map keys | added (1.4.1.2) nshaheed |
| 464 | 474 | virtual void get_keys( std::vector<std::string> & keys ); |
| 475 | + // reverse array order | added (1.4.2.0) azaday | |
| 476 | + virtual void reverse(); | |
| 465 | 477 | |
| 466 | 478 | public: |
| 467 | 479 | std::vector<t_CKVEC4> m_vector; |
| @@ -0,0 +1,11 @@ | ||
| 1 | +[1,2,3,4,5,6] @=> int a[]; | |
| 2 | +[1,2,3,4,5,6] @=> int b[]; | |
| 3 | + | |
| 4 | +b.reverse(); | |
| 5 | + | |
| 6 | +// test b is the reverse of a | |
| 7 | +for (int i; i < a.size(); i++) { | |
| 8 | + if (a[i] != b[-i-1]) me.exit(); | |
| 9 | +} | |
| 10 | + | |
| 11 | +<<< "success" >>>; | |