Xonotic
yenc.qh File Reference
#include "test.qh"
+ Include dependency graph for yenc.qh:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define ydec_single(stringiter, ret)
 
#define yenc_single(c, ret)
 

Functions

 TEST (yEnc, EncodeDecode)
 

Macro Definition Documentation

◆ ydec_single

#define ydec_single (   stringiter,
  ret 
)
Value:
MACRO_BEGIN \
int conv = STRING_ITERATOR_GET(stringiter); \
if (conv <= 0) { \
ret = -1; \
} else { \
if (conv == '=') { \
conv = STRING_ITERATOR_GET(stringiter); \
conv -= 64; \
} \
if (conv < 42) conv += 256; \
conv -= 42; \
ret = conv; \
} \
#define MACRO_END
Definition: macro.qh:7
#define STRING_ITERATOR_GET(this)
Definition: iter.qh:55

Definition at line 31 of file yenc.qh.

Referenced by TEST().

◆ yenc_single

#define yenc_single (   c,
  ret 
)
Value:
MACRO_BEGIN \
int conv = c; \
conv += 42; \
if (conv >= 256) conv -= 256; \
switch (conv) \
{ \
default: \
{ \
string yenc_it = chr2str(conv); \
ret = yenc_it; \
break; \
} \
case 0: \
case '\n': \
case '\r': \
case '=': \
{ \
conv += 64; \
string yenc_it = chr2str('=', conv); \
ret = yenc_it; \
break; \
} \
} \
MACRO_END
#define chr2str
Definition: dpextensions.qh:48

Definition at line 5 of file yenc.qh.

Referenced by TEST().

Function Documentation

◆ TEST()

TEST ( yEnc  ,
EncodeDecode   
)

Definition at line 47 of file yenc.qh.

References EXPECT_EQ, STRING_ITERATOR(), string_null, SUCCEED, ydec_single, and yenc_single.

48 {
49  for (int i = 0; i <= 255; ++i)
50  {
51  int expect = i;
52 
53  string fragment = string_null;
54  yenc_single(expect, fragment);
55 
56  int encdec = 0;
57  STRING_ITERATOR(fragmentiterator, fragment, 0);
58  ydec_single(fragmentiterator, encdec);
59 
60  EXPECT_EQ(expect, encdec);
61  }
62  SUCCEED();
63 }
string string_null
Definition: nil.qh:9
#define yenc_single(c, ret)
Definition: yenc.qh:5
#define EXPECT_EQ(expected_, actual_)
Definition: test.qh:32
#define ydec_single(stringiter, ret)
Definition: yenc.qh:31
#define SUCCEED()
Must be present at the end of a test.
Definition: test.qh:15
STRING_ITERATOR(_json, string_null, 0)
+ Here is the call graph for this function: