Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  test-kstrtox.c   Sprache: C

 
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>

#define for_each_test(i, test) \
 for (i = 0; i < ARRAY_SIZE(test); i++)

struct test_fail {
 const char *str;
 unsigned int base;
};

#define DEFINE_TEST_FAIL(test) \
 const struct test_fail test[] __initconst

#define DECLARE_TEST_OK(type, test_type) \
 test_type {    \
  const char *str;  \
  unsigned int base;  \
  type expected_res;  \
 }

#define DEFINE_TEST_OK(type, test) \
 const type test[] __initconst

#define TEST_FAIL(fn, type, fmt, test)     \
{         \
 unsigned int i;       \
         \
 for_each_test(i, test) {     \
  const struct test_fail *t = &test[i];   \
  type tmp;      \
  int rv;       \
         \
  tmp = 0;      \
  rv = fn(t->str, t->base, &tmp);    \
  if (rv >= 0) {      \
   WARN(1, "str '%s', base %u, expected -E, got %d/" fmt "\n", \
    t->str, t->base, rv, tmp);  \
   continue;     \
  }       \
 }        \
}

#define TEST_OK(fn, type, fmt, test)     \
{         \
 unsigned int i;       \
         \
 for_each_test(i, test) {     \
  const typeof(test[0]) *t = &test[i];   \
  type res;      \
  int rv;       \
         \
  rv = fn(t->str, t->base, &res);    \
  if (rv != 0) {      \
   WARN(1, "str '%s', base %u, expected 0/" fmt ", got %d\n", \
    t->str, t->base, t->expected_res, rv); \
   continue;     \
  }       \
  if (res != t->expected_res) {    \
   WARN(1, "str '%s', base %u, expected " fmt ", got " fmt "\n", \
    t->str, t->base, t->expected_res, res); \
   continue;     \
  }       \
 }        \
}

static void __init test_kstrtoull_ok(void)
{
 DECLARE_TEST_OK(unsigned long longstruct test_ull);
 static DEFINE_TEST_OK(struct test_ull, test_ull_ok) = {
  {"0", 10, 0ULL},
  {"1", 10, 1ULL},
  {"127", 10, 127ULL},
  {"128", 10, 128ULL},
  {"129", 10, 129ULL},
  {"255", 10, 255ULL},
  {"256", 10, 256ULL},
  {"257", 10, 257ULL},
  {"32767", 10, 32767ULL},
  {"32768", 10, 32768ULL},
  {"32769", 10, 32769ULL},
  {"65535", 10, 65535ULL},
  {"65536", 10, 65536ULL},
  {"65537", 10, 65537ULL},
  {"2147483647", 10, 2147483647ULL},
  {"2147483648", 10, 2147483648ULL},
  {"2147483649", 10, 2147483649ULL},
  {"4294967295", 10, 4294967295ULL},
  {"4294967296", 10, 4294967296ULL},
  {"4294967297", 10, 4294967297ULL},
  {"9223372036854775807", 10, 9223372036854775807ULL},
  {"9223372036854775808", 10, 9223372036854775808ULL},
  {"9223372036854775809", 10, 9223372036854775809ULL},
  {"18446744073709551614", 10, 18446744073709551614ULL},
  {"18446744073709551615", 10, 18446744073709551615ULL},

  {"00",  8, 00ULL},
  {"01",  8, 01ULL},
  {"0177", 8, 0177ULL},
  {"0200", 8, 0200ULL},
  {"0201", 8, 0201ULL},
  {"0377", 8, 0377ULL},
  {"0400", 8, 0400ULL},
  {"0401", 8, 0401ULL},
  {"077777", 8, 077777ULL},
  {"0100000", 8, 0100000ULL},
  {"0100001", 8, 0100001ULL},
  {"0177777", 8, 0177777ULL},
  {"0200000", 8, 0200000ULL},
  {"0200001", 8, 0200001ULL},
  {"017777777777", 8, 017777777777ULL},
  {"020000000000", 8, 020000000000ULL},
  {"020000000001", 8, 020000000001ULL},
  {"037777777777", 8, 037777777777ULL},
  {"040000000000", 8, 040000000000ULL},
  {"040000000001", 8, 040000000001ULL},
  {"0777777777777777777777", 8, 0777777777777777777777ULL},
  {"01000000000000000000000", 8, 01000000000000000000000ULL},
  {"01000000000000000000001", 8, 01000000000000000000001ULL},
  {"01777777777777777777776", 8, 01777777777777777777776ULL},
  {"01777777777777777777777", 8, 01777777777777777777777ULL},

  {"0x0",  16, 0x0ULL},
  {"0x1",  16, 0x1ULL},
  {"0x7f", 16, 0x7fULL},
  {"0x80", 16, 0x80ULL},
  {"0x81", 16, 0x81ULL},
  {"0xff", 16, 0xffULL},
  {"0x100", 16, 0x100ULL},
  {"0x101", 16, 0x101ULL},
  {"0x7fff", 16, 0x7fffULL},
  {"0x8000", 16, 0x8000ULL},
  {"0x8001", 16, 0x8001ULL},
  {"0xffff", 16, 0xffffULL},
  {"0x10000", 16, 0x10000ULL},
  {"0x10001", 16, 0x10001ULL},
  {"0x7fffffff", 16, 0x7fffffffULL},
  {"0x80000000", 16, 0x80000000ULL},
  {"0x80000001", 16, 0x80000001ULL},
  {"0xffffffff", 16, 0xffffffffULL},
  {"0x100000000", 16, 0x100000000ULL},
  {"0x100000001", 16, 0x100000001ULL},
  {"0x7fffffffffffffff", 16, 0x7fffffffffffffffULL},
  {"0x8000000000000000", 16, 0x8000000000000000ULL},
  {"0x8000000000000001", 16, 0x8000000000000001ULL},
  {"0xfffffffffffffffe", 16, 0xfffffffffffffffeULL},
  {"0xffffffffffffffff", 16, 0xffffffffffffffffULL},

  {"0\n", 0, 0ULL},
 };
 TEST_OK(kstrtoull, unsigned long long"%llu", test_ull_ok);
}

static void __init test_kstrtoull_fail(void)
{
 static DEFINE_TEST_FAIL(test_ull_fail) = {
  {"", 0},
  {"", 8},
  {"", 10},
  {"", 16},
  {"\n", 0},
  {"\n", 8},
  {"\n", 10},
  {"\n", 16},
  {"\n0", 0},
  {"\n0", 8},
  {"\n0", 10},
  {"\n0", 16},
  {"+", 0},
  {"+", 8},
  {"+", 10},
  {"+", 16},
  {"-", 0},
  {"-", 8},
  {"-", 10},
  {"-", 16},
  {"0x", 0},
  {"0x", 16},
  {"0X", 0},
  {"0X", 16},
  {"0 ", 0},
  {"1+", 0},
  {"1-", 0},
  {" 2", 0},
  /* base autodetection */
  {"0x0z", 0},
  {"0z",  0},
  {"a",  0},
  /* digit >= base */
  {"2", 2},
  {"8", 8},
  {"a", 10},
  {"A", 10},
  {"g", 16},
  {"G", 16},
  /* overflow */
  {"10000000000000000000000000000000000000000000000000000000000000000", 2},
  {"2000000000000000000000", 8},
  {"18446744073709551616", 10},
  {"10000000000000000", 16},
  /* negative */
  {"-0", 0},
  {"-0", 8},
  {"-0", 10},
  {"-0", 16},
  {"-1", 0},
  {"-1", 8},
  {"-1", 10},
  {"-1", 16},
  /* sign is first character if any */
  {"-+1", 0},
  {"-+1", 8},
  {"-+1", 10},
  {"-+1", 16},
  /* nothing after \n */
  {"0\n0", 0},
  {"0\n0", 8},
  {"0\n0", 10},
  {"0\n0", 16},
  {"0\n+", 0},
  {"0\n+", 8},
  {"0\n+", 10},
  {"0\n+", 16},
  {"0\n-", 0},
  {"0\n-", 8},
  {"0\n-", 10},
  {"0\n-", 16},
  {"0\n ", 0},
  {"0\n ", 8},
  {"0\n ", 10},
  {"0\n ", 16},
 };
 TEST_FAIL(kstrtoull, unsigned long long"%llu", test_ull_fail);
}

static void __init test_kstrtoll_ok(void)
{
 DECLARE_TEST_OK(long longstruct test_ll);
 static DEFINE_TEST_OK(struct test_ll, test_ll_ok) = {
  {"0", 10, 0LL},
  {"1", 10, 1LL},
  {"127", 10, 127LL},
  {"128", 10, 128LL},
  {"129", 10, 129LL},
  {"255", 10, 255LL},
  {"256", 10, 256LL},
  {"257", 10, 257LL},
  {"32767", 10, 32767LL},
  {"32768", 10, 32768LL},
  {"32769", 10, 32769LL},
  {"65535", 10, 65535LL},
  {"65536", 10, 65536LL},
  {"65537", 10, 65537LL},
  {"2147483647", 10, 2147483647LL},
  {"2147483648", 10, 2147483648LL},
  {"2147483649", 10, 2147483649LL},
  {"4294967295", 10, 4294967295LL},
  {"4294967296", 10, 4294967296LL},
  {"4294967297", 10, 4294967297LL},
  {"9223372036854775807", 10, 9223372036854775807LL},

  {"-0", 10, 0LL},
  {"-1", 10, -1LL},
  {"-2", 10, -2LL},
  {"-9223372036854775808", 10, LLONG_MIN},
 };
 TEST_OK(kstrtoll, long long"%lld", test_ll_ok);
}

static void __init test_kstrtoll_fail(void)
{
 static DEFINE_TEST_FAIL(test_ll_fail) = {
  {"9223372036854775808", 10},
  {"9223372036854775809", 10},
  {"18446744073709551614", 10},
  {"18446744073709551615", 10},
  {"-9223372036854775809", 10},
  {"-18446744073709551614", 10},
  {"-18446744073709551615", 10},
  /* sign is first character if any */
  {"-+1", 0},
  {"-+1", 8},
  {"-+1", 10},
  {"-+1", 16},
 };
 TEST_FAIL(kstrtoll, long long"%lld", test_ll_fail);
}

static void __init test_kstrtou64_ok(void)
{
 DECLARE_TEST_OK(u64, struct test_u64);
 static DEFINE_TEST_OK(struct test_u64, test_u64_ok) = {
  {"0", 10, 0},
  {"1", 10, 1},
  {"126", 10, 126},
  {"127", 10, 127},
  {"128", 10, 128},
  {"129", 10, 129},
  {"254", 10, 254},
  {"255", 10, 255},
  {"256", 10, 256},
  {"257", 10, 257},
  {"32766", 10, 32766},
  {"32767", 10, 32767},
  {"32768", 10, 32768},
  {"32769", 10, 32769},
  {"65534", 10, 65534},
  {"65535", 10, 65535},
  {"65536", 10, 65536},
  {"65537", 10, 65537},
  {"2147483646", 10, 2147483646},
  {"2147483647", 10, 2147483647},
  {"2147483648", 10, 2147483648ULL},
  {"2147483649", 10, 2147483649ULL},
  {"4294967294", 10, 4294967294ULL},
  {"4294967295", 10, 4294967295ULL},
  {"4294967296", 10, 4294967296ULL},
  {"4294967297", 10, 4294967297ULL},
  {"9223372036854775806", 10, 9223372036854775806ULL},
  {"9223372036854775807", 10, 9223372036854775807ULL},
  {"9223372036854775808", 10, 9223372036854775808ULL},
  {"9223372036854775809", 10, 9223372036854775809ULL},
  {"18446744073709551614", 10, 18446744073709551614ULL},
  {"18446744073709551615", 10, 18446744073709551615ULL},
 };
 TEST_OK(kstrtou64, u64, "%llu", test_u64_ok);
}

static void __init test_kstrtou64_fail(void)
{
 static DEFINE_TEST_FAIL(test_u64_fail) = {
  {"-2", 10},
  {"-1", 10},
  {"18446744073709551616", 10},
  {"18446744073709551617", 10},
 };
 TEST_FAIL(kstrtou64, u64, "%llu", test_u64_fail);
}

static void __init test_kstrtos64_ok(void)
{
 DECLARE_TEST_OK(s64, struct test_s64);
 static DEFINE_TEST_OK(struct test_s64, test_s64_ok) = {
  {"-128", 10, -128},
  {"-127", 10, -127},
  {"-1", 10, -1},
  {"0", 10, 0},
  {"1", 10, 1},
  {"126", 10, 126},
  {"127", 10, 127},
  {"128", 10, 128},
  {"129", 10, 129},
  {"254", 10, 254},
  {"255", 10, 255},
  {"256", 10, 256},
  {"257", 10, 257},
  {"32766", 10, 32766},
  {"32767", 10, 32767},
  {"32768", 10, 32768},
  {"32769", 10, 32769},
  {"65534", 10, 65534},
  {"65535", 10, 65535},
  {"65536", 10, 65536},
  {"65537", 10, 65537},
  {"2147483646", 10, 2147483646},
  {"2147483647", 10, 2147483647},
  {"2147483648", 10, 2147483648LL},
  {"2147483649", 10, 2147483649LL},
  {"4294967294", 10, 4294967294LL},
  {"4294967295", 10, 4294967295LL},
  {"4294967296", 10, 4294967296LL},
  {"4294967297", 10, 4294967297LL},
  {"9223372036854775806", 10, 9223372036854775806LL},
  {"9223372036854775807", 10, 9223372036854775807LL},
 };
 TEST_OK(kstrtos64, s64, "%lld", test_s64_ok);
}

static void __init test_kstrtos64_fail(void)
{
 static DEFINE_TEST_FAIL(test_s64_fail) = {
  {"9223372036854775808", 10},
  {"9223372036854775809", 10},
  {"18446744073709551614", 10},
  {"18446744073709551615", 10},
  {"18446744073709551616", 10},
  {"18446744073709551617", 10},
 };
 TEST_FAIL(kstrtos64, s64, "%lld", test_s64_fail);
}

static void __init test_kstrtou32_ok(void)
{
 DECLARE_TEST_OK(u32, struct test_u32);
 static DEFINE_TEST_OK(struct test_u32, test_u32_ok) = {
  {"0", 10, 0},
  {"1", 10, 1},
  {"126", 10, 126},
  {"127", 10, 127},
  {"128", 10, 128},
  {"129", 10, 129},
  {"254", 10, 254},
  {"255", 10, 255},
  {"256", 10, 256},
  {"257", 10, 257},
  {"32766", 10, 32766},
  {"32767", 10, 32767},
  {"32768", 10, 32768},
  {"32769", 10, 32769},
  {"65534", 10, 65534},
  {"65535", 10, 65535},
  {"65536", 10, 65536},
  {"65537", 10, 65537},
  {"2147483646", 10, 2147483646},
  {"2147483647", 10, 2147483647},
  {"2147483648", 10, 2147483648U},
  {"2147483649", 10, 2147483649U},
  {"4294967294", 10, 4294967294U},
  {"4294967295", 10, 4294967295U},
 };
 TEST_OK(kstrtou32, u32, "%u", test_u32_ok);
}

static void __init test_kstrtou32_fail(void)
{
 static DEFINE_TEST_FAIL(test_u32_fail) = {
  {"-2", 10},
  {"-1", 10},
  {"4294967296", 10},
  {"4294967297", 10},
  {"9223372036854775806", 10},
  {"9223372036854775807", 10},
  {"9223372036854775808", 10},
  {"9223372036854775809", 10},
  {"18446744073709551614", 10},
  {"18446744073709551615", 10},
  {"18446744073709551616", 10},
  {"18446744073709551617", 10},
 };
 TEST_FAIL(kstrtou32, u32, "%u", test_u32_fail);
}

static void __init test_kstrtos32_ok(void)
{
 DECLARE_TEST_OK(s32, struct test_s32);
 static DEFINE_TEST_OK(struct test_s32, test_s32_ok) = {
  {"-128", 10, -128},
  {"-127", 10, -127},
  {"-1", 10, -1},
  {"0", 10, 0},
  {"1", 10, 1},
  {"126", 10, 126},
  {"127", 10, 127},
  {"128", 10, 128},
  {"129", 10, 129},
  {"254", 10, 254},
  {"255", 10, 255},
  {"256", 10, 256},
  {"257", 10, 257},
  {"32766", 10, 32766},
  {"32767", 10, 32767},
  {"32768", 10, 32768},
  {"32769", 10, 32769},
  {"65534", 10, 65534},
  {"65535", 10, 65535},
  {"65536", 10, 65536},
  {"65537", 10, 65537},
  {"2147483646", 10, 2147483646},
  {"2147483647", 10, 2147483647},
 };
 TEST_OK(kstrtos32, s32, "%d", test_s32_ok);
}

static void __init test_kstrtos32_fail(void)
{
 static DEFINE_TEST_FAIL(test_s32_fail) = {
  {"2147483648", 10},
  {"2147483649", 10},
  {"4294967294", 10},
  {"4294967295", 10},
  {"4294967296", 10},
  {"4294967297", 10},
  {"9223372036854775806", 10},
  {"9223372036854775807", 10},
  {"9223372036854775808", 10},
  {"9223372036854775809", 10},
  {"18446744073709551614", 10},
  {"18446744073709551615", 10},
  {"18446744073709551616", 10},
  {"18446744073709551617", 10},
 };
 TEST_FAIL(kstrtos32, s32, "%d", test_s32_fail);
}

static void __init test_kstrtou16_ok(void)
{
 DECLARE_TEST_OK(u16, struct test_u16);
 static DEFINE_TEST_OK(struct test_u16, test_u16_ok) = {
  {"0", 10, 0},
  {"1", 10, 1},
  {"126", 10, 126},
  {"127", 10, 127},
  {"128", 10, 128},
  {"129", 10, 129},
  {"254", 10, 254},
  {"255", 10, 255},
  {"256", 10, 256},
  {"257", 10, 257},
  {"32766", 10, 32766},
  {"32767", 10, 32767},
  {"32768", 10, 32768},
  {"32769", 10, 32769},
  {"65534", 10, 65534},
  {"65535", 10, 65535},
 };
 TEST_OK(kstrtou16, u16, "%hu", test_u16_ok);
}

static void __init test_kstrtou16_fail(void)
{
 static DEFINE_TEST_FAIL(test_u16_fail) = {
  {"-2", 10},
  {"-1", 10},
  {"65536", 10},
  {"65537", 10},
  {"2147483646", 10},
  {"2147483647", 10},
  {"2147483648", 10},
  {"2147483649", 10},
  {"4294967294", 10},
  {"4294967295", 10},
  {"4294967296", 10},
  {"4294967297", 10},
  {"9223372036854775806", 10},
  {"9223372036854775807", 10},
  {"9223372036854775808", 10},
  {"9223372036854775809", 10},
  {"18446744073709551614", 10},
  {"18446744073709551615", 10},
  {"18446744073709551616", 10},
  {"18446744073709551617", 10},
 };
 TEST_FAIL(kstrtou16, u16, "%hu", test_u16_fail);
}

static void __init test_kstrtos16_ok(void)
{
 DECLARE_TEST_OK(s16, struct test_s16);
 static DEFINE_TEST_OK(struct test_s16, test_s16_ok) = {
  {"-130", 10, -130},
  {"-129", 10, -129},
  {"-128", 10, -128},
  {"-127", 10, -127},
  {"-1", 10, -1},
  {"0", 10, 0},
  {"1", 10, 1},
  {"126", 10, 126},
  {"127", 10, 127},
  {"128", 10, 128},
  {"129", 10, 129},
  {"254", 10, 254},
  {"255", 10, 255},
  {"256", 10, 256},
  {"257", 10, 257},
  {"32766", 10, 32766},
  {"32767", 10, 32767},
 };
 TEST_OK(kstrtos16, s16, "%hd", test_s16_ok);
}

static void __init test_kstrtos16_fail(void)
{
 static DEFINE_TEST_FAIL(test_s16_fail) = {
  {"32768", 10},
  {"32769", 10},
  {"65534", 10},
  {"65535", 10},
  {"65536", 10},
  {"65537", 10},
  {"2147483646", 10},
  {"2147483647", 10},
  {"2147483648", 10},
  {"2147483649", 10},
  {"4294967294", 10},
  {"4294967295", 10},
  {"4294967296", 10},
  {"4294967297", 10},
  {"9223372036854775806", 10},
  {"9223372036854775807", 10},
  {"9223372036854775808", 10},
  {"9223372036854775809", 10},
  {"18446744073709551614", 10},
  {"18446744073709551615", 10},
  {"18446744073709551616", 10},
  {"18446744073709551617", 10},
 };
 TEST_FAIL(kstrtos16, s16, "%hd", test_s16_fail);
}

static void __init test_kstrtou8_ok(void)
{
 DECLARE_TEST_OK(u8, struct test_u8);
 static DEFINE_TEST_OK(struct test_u8, test_u8_ok) = {
  {"0", 10, 0},
  {"1", 10, 1},
  {"126", 10, 126},
  {"127", 10, 127},
  {"128", 10, 128},
  {"129", 10, 129},
  {"254", 10, 254},
  {"255", 10, 255},
 };
 TEST_OK(kstrtou8, u8, "%hhu", test_u8_ok);
}

static void __init test_kstrtou8_fail(void)
{
 static DEFINE_TEST_FAIL(test_u8_fail) = {
  {"-2", 10},
  {"-1", 10},
  {"256", 10},
  {"257", 10},
  {"32766", 10},
  {"32767", 10},
  {"32768", 10},
  {"32769", 10},
  {"65534", 10},
  {"65535", 10},
  {"65536", 10},
  {"65537", 10},
  {"2147483646", 10},
  {"2147483647", 10},
  {"2147483648", 10},
  {"2147483649", 10},
  {"4294967294", 10},
  {"4294967295", 10},
  {"4294967296", 10},
  {"4294967297", 10},
  {"9223372036854775806", 10},
  {"9223372036854775807", 10},
  {"9223372036854775808", 10},
  {"9223372036854775809", 10},
  {"18446744073709551614", 10},
  {"18446744073709551615", 10},
  {"18446744073709551616", 10},
  {"18446744073709551617", 10},
 };
 TEST_FAIL(kstrtou8, u8, "%hhu", test_u8_fail);
}

static void __init test_kstrtos8_ok(void)
{
 DECLARE_TEST_OK(s8, struct test_s8);
 static DEFINE_TEST_OK(struct test_s8, test_s8_ok) = {
  {"-128", 10, -128},
  {"-127", 10, -127},
  {"-1", 10, -1},
  {"0", 10, 0},
  {"1", 10, 1},
  {"126", 10, 126},
  {"127", 10, 127},
 };
 TEST_OK(kstrtos8, s8, "%hhd", test_s8_ok);
}

static void __init test_kstrtos8_fail(void)
{
 static DEFINE_TEST_FAIL(test_s8_fail) = {
  {"-130", 10},
  {"-129", 10},
  {"128", 10},
  {"129", 10},
  {"254", 10},
  {"255", 10},
  {"256", 10},
  {"257", 10},
  {"32766", 10},
  {"32767", 10},
  {"32768", 10},
  {"32769", 10},
  {"65534", 10},
  {"65535", 10},
  {"65536", 10},
  {"65537", 10},
  {"2147483646", 10},
  {"2147483647", 10},
  {"2147483648", 10},
  {"2147483649", 10},
  {"4294967294", 10},
  {"4294967295", 10},
  {"4294967296", 10},
  {"4294967297", 10},
  {"9223372036854775806", 10},
  {"9223372036854775807", 10},
  {"9223372036854775808", 10},
  {"9223372036854775809", 10},
  {"18446744073709551614", 10},
  {"18446744073709551615", 10},
  {"18446744073709551616", 10},
  {"18446744073709551617", 10},
 };
 TEST_FAIL(kstrtos8, s8, "%hhd", test_s8_fail);
}

static int __init test_kstrtox_init(void)
{
 test_kstrtoull_ok();
 test_kstrtoull_fail();
 test_kstrtoll_ok();
 test_kstrtoll_fail();

 test_kstrtou64_ok();
 test_kstrtou64_fail();
 test_kstrtos64_ok();
 test_kstrtos64_fail();

 test_kstrtou32_ok();
 test_kstrtou32_fail();
 test_kstrtos32_ok();
 test_kstrtos32_fail();

 test_kstrtou16_ok();
 test_kstrtou16_fail();
 test_kstrtos16_ok();
 test_kstrtos16_fail();

 test_kstrtou8_ok();
 test_kstrtou8_fail();
 test_kstrtos8_ok();
 test_kstrtos8_fail();
 return -EINVAL;
}
module_init(test_kstrtox_init);
MODULE_DESCRIPTION("Module test for kstrto*() APIs");
MODULE_LICENSE("Dual BSD/GPL");

Messung V0.5
C=94 H=92 G=92

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge