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 | func->add_arg( "string[]", "keys" ); | 970 | func->add_arg( "string[]", "keys" ); |
| 971 | func->doc = "return all keys found in associative array in keys"; | 971 | func->doc = "return all keys found in associative array in keys"; |
| 972 | if( !type_engine_import_mfun( env, func ) ) goto error; | 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 | // note 1.4.1.0: in the future, should deprecate and encourage programmer | 979 | // note 1.4.1.0: in the future, should deprecate and encourage programmer |
| 975 | // to explicitly use .size() OR .capacity(), depending on the context | 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 | CK_DLL_MFUN( array_reset ); | 190 | CK_DLL_MFUN( array_reset ); |
| 191 | CK_DLL_MFUN( array_zero ); | 191 | CK_DLL_MFUN( array_zero ); |
| 192 | CK_DLL_MFUN( array_get_keys ); | 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 | #include "chuck_errmsg.h" | 38 | #include "chuck_errmsg.h" |
| 39 | #include "chuck_dl.h" | 39 | #include "chuck_dl.h" |
| 40 | 40 | ||
| 41 | #include <algorithm> | ||
| 41 | #include <iostream> | 42 | #include <iostream> |
| 42 | #include <sstream> | 43 | #include <sstream> |
| 43 | #include <iomanip> | 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 | // name: back() | 716 | // name: back() |
| 704 | // desc: ... | 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 | // name: back() | 1116 | // name: back() |
| 1092 | // desc: ... | 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 | // name: back() | 1477 | // name: back() |
| 1441 | // desc: ... | 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 | // name: Chuck_Array32() | 1928 | // name: Chuck_Array32() |
| 1880 | // desc: constructor | 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 | // static | 2275 | // static |
| 2216 | t_CKUINT Chuck_Event::our_can_wait = 0; | 2276 | t_CKUINT Chuck_Event::our_can_wait = 0; |
| @@ -234,6 +234,8 @@ public: · 233 unmodified lines | |||
| 234 | virtual void zero() = 0; // zero (all) | 234 | virtual void zero() = 0; // zero (all) |
| 235 | // get map keys | added (1.4.2.0) nshaheed | 235 | // get map keys | added (1.4.2.0) nshaheed |
| 236 | virtual void get_keys( std::vector<std::string> & keys ) = 0; | 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 | Chuck_Type * m_array_type; | 240 | Chuck_Type * m_array_type; |
| 239 | }; | 241 | }; |
| @@ -276,6 +278,8 @@ public: · 36 unmodified lines | |||
| 276 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY4_DATAKIND; } | 278 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY4_DATAKIND; } |
| 277 | // get map keys | added (1.4.2.0) nshaheed | 279 | // get map keys | added (1.4.2.0) nshaheed |
| 278 | virtual void get_keys( std::vector<std::string> & keys ); | 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 | public: | 284 | public: |
| 281 | std::vector<t_CKUINT> m_vector; | 285 | std::vector<t_CKUINT> m_vector; |
| @@ -326,6 +330,8 @@ public: · 44 unmodified lines | |||
| 326 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY8_DATAKIND; } | 330 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY8_DATAKIND; } |
| 327 | // get map keys | added (1.4.2.0) nshaheed | 331 | // get map keys | added (1.4.2.0) nshaheed |
| 328 | virtual void get_keys( std::vector<std::string> & keys ); | 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 | public: | 336 | public: |
| 331 | std::vector<t_CKFLOAT> m_vector; | 337 | std::vector<t_CKFLOAT> m_vector; |
| @@ -372,6 +378,8 @@ public: · 40 unmodified lines | |||
| 372 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY16_DATAKIND; } | 378 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY16_DATAKIND; } |
| 373 | // get map keys | added (1.4.2.0) nshaheed | 379 | // get map keys | added (1.4.2.0) nshaheed |
| 374 | virtual void get_keys( std::vector<std::string> & keys ); | 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 | public: | 384 | public: |
| 377 | std::vector<t_CKCOMPLEX> m_vector; | 385 | std::vector<t_CKCOMPLEX> m_vector; |
| @@ -418,6 +426,8 @@ public: · 40 unmodified lines | |||
| 418 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY24_DATAKIND; } | 426 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY24_DATAKIND; } |
| 419 | // get map keys | added (1.4.2.0) nshaheed | 427 | // get map keys | added (1.4.2.0) nshaheed |
| 420 | virtual void get_keys( std::vector<std::string> & keys ); | 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 | public: | 432 | public: |
| 423 | std::vector<t_CKVEC3> m_vector; | 433 | std::vector<t_CKVEC3> m_vector; |
| @@ -462,6 +472,8 @@ public: · 38 unmodified lines | |||
| 462 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY32_DATAKIND; } | 472 | virtual t_CKINT data_type_kind( ) { return CHUCK_ARRAY32_DATAKIND; } |
| 463 | // get map keys | added (1.4.1.2) nshaheed | 473 | // get map keys | added (1.4.1.2) nshaheed |
| 464 | virtual void get_keys( std::vector<std::string> & keys ); | 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 | public: | 478 | public: |
| 467 | std::vector<t_CKVEC4> m_vector; | 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" >>>; | ||