Changeset 2917


Ignore:
Timestamp:
Sep 14, 2013, 5:50:45 PM (6 years ago)
Author:
benlitz
Message:

core: added StartsWith and EndsWith function for strings, and a sign function for numeric types

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lol/base/string.h

    r2851 r2917  
    157157                return i;
    158158        return -1;
     159    }
     160
     161    bool StartsWith(char const* token) const
     162    {
     163        const char* p = C();
     164        while (*token != '\0')
     165        {
     166            if (*p != *token)
     167                return false;
     168
     169            ++p;
     170            ++token;
     171        }
     172
     173        return true;
     174    }
     175
     176    bool EndsWith(char const* token) const
     177    {
     178        const char* p = C();
     179        int token_idx = strlen(token) - 1;
     180        int c_idx = strlen(p) - 1;
     181
     182        if (c_idx < token_idx)
     183            return false;
     184
     185        while (token_idx >= 0)
     186        {
     187            if (token[token_idx] != p[c_idx])
     188                return false;
     189
     190            --token_idx;
     191            --c_idx;
     192        }
     193
     194        return true;
    159195    }
    160196
  • trunk/src/lol/math/functions.h

    r2915 r2917  
    172172    static inline T min(T x, T y) { return std::min(x, y); } \
    173173    static inline T max(T x, T y) { return std::max(x, y); } \
    174     static inline T clamp(T x, T y, T z) { return min(max(x, y), z); }
     174    static inline T clamp(T x, T y, T z) { return min(max(x, y), z); } \
     175    static inline T sign(T x) { return (T)(((T)0 < x) - (x < (T)0)); }
     176
    175177LOL_GENERIC_FUNC(uint8_t)
    176178LOL_GENERIC_FUNC(int8_t)
  • trunk/test/unit/string.cpp

    r2816 r2917  
    219219        LOLUNIT_ASSERT(i8 == -1);
    220220        LOLUNIT_ASSERT(i9 == 9);
    221     }};
     221    }
     222
     223    LOLUNIT_TEST(StartsEndsWith)
     224    {
     225        String s = "lolilol";
     226        LOLUNIT_ASSERT(s.StartsWith("loli"));
     227        LOLUNIT_ASSERT(!s.StartsWith("lolo"));
     228        LOLUNIT_ASSERT(!s.StartsWith("lolilolilol"));
     229        LOLUNIT_ASSERT(s.EndsWith("ilol"));
     230        LOLUNIT_ASSERT(!s.EndsWith("olol"));
     231        LOLUNIT_ASSERT(!s.EndsWith("lolilolilol"));
     232    }
     233};
    222234
    223235} /* namespace lol */
Note: See TracChangeset for help on using the changeset viewer.