40 #include "dsm_types.h" 45 #define MHEG5CP_DEFAULT 127 53 static int indent = 0;
67 void MHEG5indent(
char *out)
71 for (i = 0; i < indent; i++)
77 int MHEG5setIndent(
int i)
84 void MHEG5incIndent(
void)
89 void MHEG5decIndent(
void)
94 void MHEG5newLine(
char *out)
96 MHEG_PRINT(out,
"\n");
99 void MHEG5classPrint(
MHEG5Final class,
char *out)
104 MHEG_PRINT(out,
"{ :Scene");
107 MHEG_PRINT(out,
"{ :Application");
110 MHEG_PRINT(out,
"{ :Link");
113 MHEG_PRINT(out,
"{ :Palette");
116 MHEG_PRINT(out,
"{ :Cursorshape");
119 MHEG_PRINT(out,
"{ :Font");
122 MHEG_PRINT(out,
"{ :ResidentPrg");
125 MHEG_PRINT(out,
"{ :Remoteprogram");
128 MHEG_PRINT(out,
"{ :Interchangedprogram");
131 MHEG_PRINT(out,
"{ :BooleanVar");
134 MHEG_PRINT(out,
"{ :IntegerVar");
137 MHEG_PRINT(out,
"{ :OStringVar");
140 MHEG_PRINT(out,
"{ :ObjectRefVar");
143 MHEG_PRINT(out,
"{ :ContentRefVar");
146 MHEG_PRINT(out,
"{ :Stream");
149 MHEG_PRINT(out,
"{ :Audio");
152 MHEG_PRINT(out,
"{ :Tokengroup");
155 MHEG_PRINT(out,
"{ :Listgroup");
158 MHEG_PRINT(out,
"{ :Rtgraphics");
161 MHEG_PRINT(out,
"{ :Lineart");
164 MHEG_PRINT(out,
"{ :Bitmap");
167 MHEG_PRINT(out,
"{ :Text");
170 MHEG_PRINT(out,
"{ :Video");
173 MHEG_PRINT(out,
"{ :Slider");
176 MHEG_PRINT(out,
"{ :Dynamiclineart");
179 MHEG_PRINT(out,
"{ :Rectangle");
182 MHEG_PRINT(out,
"{ :Entryfield");
185 MHEG_PRINT(out,
"{ :Hypertext");
188 MHEG_PRINT(out,
"{ :Hotspot");
191 MHEG_PRINT(out,
"{ :Pushbutton");
194 MHEG_PRINT(out,
"{ :Switchbutton");
197 MHEG_PRINT(out,
"{:InternalError");
204 #if defined(MHEG5LOG) || defined(MH5PRINTOUT) 219 for (i = 0; i != s.
len && j < 1020; i++)
221 if ((s.
data[i] >=
' ' && s.
data[i] <
'=') ||
222 (s.
data[i] >
'=' && s.
data[i] <= 127) ||
225 buff[j++] = s.
data[i];
230 buff[j++] = (s.
data[i] >> 4) < 10 ? (s.
data[i] >> 4) +
'0' : (s.
data[i] >> 4) +
'A' - 10;
231 buff[j++] = (s.
data[i] & 0x0F) < 10 ? (s.
data[i] & 0x0F) +
'0' : (s.
data[i] & 0x0F) +
'A' - 10;
235 MHEG_PRINT(out,
"'");
236 MHEG_PRINT(out, buff);
237 MHEG_PRINT(out,
"'");
246 for (i = 0; i != s.
len && j < 124; i++)
249 buff[j++] = (s.
data[i] >> 4) < 10 ? (s.
data[i] >> 4) +
'0' : (s.
data[i] >> 4) +
'A' - 10;
250 buff[j++] = (s.
data[i] & 0x0F) < 10 ? (s.
data[i] & 0x0F) +
'0' : (s.
data[i] & 0x0F) +
'A' - 10;
253 MHEG_PRINT(out,
"'");
254 MHEG_PRINT(out, buff);
255 MHEG_PRINT(out,
"'");
262 MHEG_PRINT(out,
"(");
264 MHEG_PRINT(out,
" ");
265 MHEG5intPrint(o.
id, out);
266 MHEG_PRINT(out,
")");
270 MHEG5intPrint(o.
id, out);
274 void MHEG5boolPrint(
MHEG5Bool b,
char *out)
278 MHEG_PRINT(out,
"TRUE");
282 MHEG_PRINT(out,
"FALSE");
292 if (pGroup && gref.
len == 0)
295 while (search && (search->
root.
id !=
id))
297 search = search->
hnxt;
306 while (search && (search->
root.
id !=
id))
308 search = search->
hnxt;
324 MHEG_PRINT(out,
":GInteger ");
326 MHEG_PRINT(out,
":IndirectRef ");
327 MHEG5intPrint(g.
value.
i, out);
331 MHEG_PRINT(out,
":GBoolean ");
333 MHEG_PRINT(out,
":IndirectRef ");
334 MHEG5boolPrint(g.
value.
b, out);
341 MHEG_PRINT(out,
":GOctetString ");
343 MHEG_PRINT(out,
":IndirectRef ");
344 MHEG5stringPrint(g.
value.
s, out);
347 MHEG_PRINT(out,
"(");
350 MHEG_PRINT(out,
")");
353 MHEG5eventPrint(g.
value.
e, out);
356 MHEG5intPrint(g.
value.
p.
x, out);
357 MHEG_PRINT(out,
" ");
358 MHEG5intPrint(g.
value.
p.
y, out);
372 switch (object->
clazz)
375 MHEG_PRINT(out,
":GBoolean ");
380 MHEG_PRINT(out,
":GOctetString ");
382 else if (dotype == 4)
384 MHEG_PRINT(out,
":NewAbsoluteColour ");
388 MHEG_PRINT(out,
":GInteger ");
391 MHEG_PRINT(out,
":GObjectRef ");
396 MHEG_PRINT(out,
":NewRefContent (");
401 MHEG_PRINT(out,
":GContentRef ");
408 MHEG_PRINT(out,
":IndirectRef ");
412 MHEG_PRINT(out,
":GObjectRef ");
414 MHEG5objectrefPrint(g.
value.
o, out);
421 MHEG_PRINT(out,
":NewRefContent (");
422 MHEG5stringPrint(g.
value.
s, out);
425 MHEG_PRINT(out,
"// :InternalError ");
435 MHEG5hexPrint(c.
value.
i, out);
438 MHEG5octetPrint(c.
value.
s, out);
441 MHEG_PRINT(out,
"??");
451 MHEG5genericPrint(l->
generic, out, (count > noTypeCnt) ? 1 : 0);
452 MHEG_PRINT(out,
" ");
459 void MHEG5sdListPrint(
MHEG5GList *l,
char *out)
461 MHEG5genericPrint(l->
generic, out, 0);
462 MHEG_PRINT(out,
" ");
466 MHEG5genericPrint(l->
generic, out, 0);
467 MHEG_PRINT(out,
" ");
476 MHEG_PRINT(out,
" :NewCCPriority ");
480 MHEG_PRINT(out,
" )");
486 MHEG5genericPrint(l->
generic, out, 2);
487 MHEG_PRINT(out,
" ");
494 void MHEG5clrListPrint(
MHEG5GList *l,
char *out)
497 MHEG_PRINT(out,
" ");
501 MHEG5genericPrint(l->
generic, out, 4);
502 MHEG_PRINT(out,
" ");
508 void MHEG5cListPrint(
MHEG5GList *l,
char *out)
510 MHEG5genericPrint(l->
generic, out, 0);
511 MHEG_PRINT(out,
" ");
513 MHEG5genericPrint(l->
generic, out, 0);
514 MHEG_PRINT(out,
" ");
523 MHEG5genericPrint(l->
generic, out, 1);
524 MHEG_PRINT(out,
" ");
555 memcpy(rc, source.
data, source.
len);
556 rc[source.
len] =
'\0';
582 rc.
data = STR_DataAllocFunc( source.
len, line + 5000 );
617 rc.
len = strlen(source);
634 memcpy(rc.
data, source, rc.
len);
652 if (source1.
len + source2.
len == 0)
689 if (item->
data != NULL)
741 register int i, mp = 1, j = 0;
746 if ((
string.len > 1) && ((
string.
data[1] ==
'x') || (
string.
data[1] ==
'X')))
748 for (i = 2; i <
string.len; i++)
749 if ((
string.
data[i] >=
'0') && (
string.
data[i] <=
'9'))
750 rc = rc * 16 + ((int)
string.
data[i] - (
int)
'0');
751 else if ((
string.
data[i] >=
'a') && (
string.data[i] <=
'z'))
752 rc = rc * 16 + ((int)
string.
data[i] - (
int)
'a') + 10;
753 else if ((
string.
data[i] >=
'A') && (
string.data[i] <=
'Z'))
754 rc = rc * 16 + ((int)
string.
data[i] - (
int)
'A') + 10;
762 if (
string.
data[0] ==
'-')
767 if (
string.
data[0] ==
'+')
772 for (i = j; i <
string.len; i++)
773 if ((
string.
data[i] >=
'0') && (
string.data[i] <=
'9'))
774 rc = rc * 10 + ((int)
string.
data[i] - (
int)
'0');
790 register int pos = 0, jj, sgn = 0;
802 buf[pos++] = (char) (abs(jj) + (int)
'0');
819 for (jj = 0; jj < pos; jj++)
821 rc.
data[jj] = buf[pos - 1 - jj];
983 item->
value.
i = initialValue;
994 for (i = 0; i < n; i++)
996 if ((a[i] == 0) && (b[i] == 0))
1015 else if (a[i] > b[i])
1035 if ((a[i] == 0) && (b[i] == 0))
1054 else if (a[i] > b[i])
1073 static unsigned long randval = 0;
1088 randval = 1664525 * randval + 1013904223;
1108 destIndex = strlen(dest);
1110 while ((source[sourceIndex] !=
'\0') && (destIndex < destLength - 1))
1112 dest[destIndex] = source[sourceIndex];
1116 dest[destIndex] =
'\0';
1121 #if defined(_WIN32_WCE) 1124 TCHAR wtempstr[256];
1126 TCHAR* StrToUnicode(
char *
string)
1128 MultiByteToWideChar(CP_ACP, MB_COMPOSITE,
string, -1, wtempstr, 255);
1132 char* StrFromUnicode(TCHAR *
string)
1134 WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK | WC_DEFAULTCHAR | WC_SEPCHARS,
string, -1, tempstr,
sizeof(tempstr) - 1, NULL, NULL);
U32BIT STB_OSGetClockMilliseconds(void)
Get Current Computer Clock Time.
MHEG5Int MHEG5strToInt(MHEG5String string)
Convert a MHEG5String to a MHEG5Integer.
Event to String conversion.
unsigned long MHEG5random(void)
Calculate and return a psuedo random number.
MHEG5Bool MHEG5genericEqual(MHEG5Generic *g1, MHEG5Generic *g2)
Compare two generic Variables.
void MHEG5gListDestruct(MHEG5GList *item)
Destruct a list of MHEG5Generic objects.
struct sMHEG5Group * MH5GroupPtr
unsigned char * STR_DataAlloc(unsigned int size)
MHEG5String MHEG5stringCat(MHEG5String source1, MHEG5String source2)
Concatenate two MHEG5Strings.
MHEG5Ingredient * hashIngred[256]
union sMH5GroupRef::@5 ptr
Implementation of the Group class Description Defines the structure and behaviour of objects used as ...
MHEG5GList * MHEG5gListCopy(MHEG5GList *list)
Copy a list of MHEG5Generic objects.
union MHEG5Generic::@6 value
MHEG5String MHEG5intToStr(MHEG5Int i)
Convert MHEG5Int to MHEG5String.
MHEG5String MHEG5stringCopy(MHEG5String source)
<Function description>="">
struct sMHEG5Ingredient * hnxt
void MHEG5stringDestruct(MHEG5String *item)
Destruct a MHEG5String.
void STR_DataFree(unsigned char *data, unsigned int size)
const char * MHEG5eventToString(MHEG5EventType event)
char * MHEG5safeStrcat(char *dest, size_t destLength, const char *source)
Perform a standard strcat restricted to the length of the destination. The dest string will always be...
void MHEG5genericDestruct(MHEG5Generic *item)
Destruct a MHEG5Generic.
#define MHEG5strncmp(a, b, n)
Implementation of the MHEG5 Application Class Defines a set of Ingredient objects, which are shared within an application scope. Base class: Group Subclasses: None Status: Concrete class.
Mheg5 logging and debug printing.
MHEG5Bool MHEG5stringEqual(MHEG5String *s1, MHEG5String *s2)
Compare two Strings (case sensitive!)
void MHEG5genericSet(MHEG5Generic *item, MHEG5Int initialValue)
Set a MHEG5Generic to the MHEG5Int value.
MHEG5String MHEG5stringCopyChr(const char *source)
Copy the C-String source to a MHEG5String.
void MHEG5genericCopy(MHEG5Generic *dest, MHEG5Generic *src)
Copy a MHEG5Generic.
#define MHEG5strcmp(a, b)
struct sMHEG5GList * next
MHEG5Application * MHEG5getCurrentApplication(void)
<Function description>="">
Header file - Function prototypes for operating system.