00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __JEDILINK_DEFINITION__
00017 #define __JEDILINK_DEFINITION__
00018
00019 #include "jed_plt.h"
00020
00021
00022
00023
00024
00025 #if PLATAFORMA == i386_LINUX_GCC || PLATAFORMA == SPARC64_LINUX_GCC
00026
00027 #if PLATAFORMA != SPARC64_LINUX_GCC
00028
00029
00030 #ifndef __USE_BSD
00031 #define __USE_BSD
00032 #endif
00033 #endif
00034 #ifndef __USE_SVID
00035 #define __USE_SVID
00036 #endif
00037 #ifndef __USE_POSIX
00038 #define __USE_POSIX
00039 #endif
00040 #ifndef __USE_MISC
00041 #define __USE_MISC
00042 #endif
00043 #endif
00044
00045 #if PLATAFORMA != PALM_PALMOS_CODEWARRIOR
00046 #include <float.h>
00047 #include <math.h>
00048 #include <stdio.h>
00049 #endif
00050
00051 #if PLATAFORMA == PALM_PALMOS_CODEWARRIOR
00052 #include <StringMgr.h>
00053 #endif
00054
00055 #include <stdlib.h>
00056
00057
00058
00059
00060
00061 #if PLATAFORMA == PALM_PALMOS_CODEWARRIOR
00062 #include <PalmOS.h>
00063 #include <FeatureMgr.h>
00064
00065
00066 #include <MathLib.h>
00067 #endif
00068
00069 #if (PLATAFORMA != SUN) && (PLATAFORMA != POWERPC_AIX_VACPP)
00070 #define FLOAT32 float
00071 #endif
00072
00073 enum ENUM_ACCIONES {
00074 ACC_ERROR = 0,
00075 ACC_ELIMINAR,
00076 ACC_LEER,
00077 ACC_ESCRIBIR
00078 };
00079
00080 #if ( PLATAFORMA == ALPHA || PLATAFORMA == i386_LINUX_GCC || PLATAFORMA == SGI || PLATAFORMA == SUN || PLATAFORMA == CRAY_J90 || PLATAFORMA == CYGNUS_WIN32 || PLATAFORMA == SPARC64_LINUX_GCC || PLATAFORMA == POWERPC_AIX_VACPP )
00081 #define SLEEP_MICROSEC(us) usleep(us)
00082 #define clrscr() printf("%c[2J%c[1;1H", 27, 27)
00083 #define gotoxy(x, y) printf("%c[%d;%dH", 27, (x), (y))
00084 #endif
00085
00086
00087
00088
00089 #if PLATAFORMA == i386_WIN32_VC
00090
00091
00092
00093 #define clrscr() printf("-----------------------------------------------------------------------\n");
00094 typedef unsigned char BYTE;
00095 typedef BYTE BOOLEAN;
00096
00097 typedef unsigned short UWORD;
00098 #ifndef TRUE
00099 #define TRUE 1
00100 #endif
00101 #ifndef FALSE
00102 #define FALSE 0
00103 #endif
00104 #include <windows.h>
00105 extern void WINlog(char *linea);
00106 extern void reportar_evento_WM(int e);
00107 extern HINSTANCE i386_WIN32_VC_instancia_actual;
00108 extern HINSTANCE i386_WIN32_VC_instancia_previa;
00109 extern LPSTR i386_WIN32_VC_linea_de_comandos;
00110 extern int i386_WIN32_VC_modo_visual;
00111 #ifndef MACHETE_MAIN
00112 extern "C" int main(int argc, char *argv[]);
00113 #endif
00114 #ifdef MACHETE_MAIN
00115 extern "C" int Jmain(int argc, char *argv[]);
00116 #endif
00117 #define SLEEP_MICROSEC(us) Sleep(us/1000)
00118 #define SRANDOM(semilla) srand((semilla))
00119 #define RANDOM() ((double)rand())/((double)RAND_MAX)
00120 extern HWND instalar_sistema_asincronico_sockets(void);
00121
00122 #ifndef CBUILDER
00123 extern void
00124 registrar_entrada_sockets(SOCKET sockfd,
00125 void (*f)(void *, int), void *User_data);
00126 #endif
00127
00128 #include <lista.h>
00129
00138 typedef struct _SOCK_IO_ {
00139 #ifndef CBUILDER
00140 SOCKET sockfd;
00141 #endif
00142 #ifdef CBUILDER
00143 int sockfd;
00144 #endif
00145 void (*f)(void *, int);
00146 void *User_data;
00147 } SOCKET_IO_PAIR;
00148
00149 extern LISTA<SOCKET_IO_PAIR *> PARES_socket;
00150
00151 #else // PLATAFORMA != i386_WIN32_VC
00152
00153 #if PLATAFORMA == PALM_PALMOS_CODEWARRIOR
00154 #define BOOLEAN Boolean
00155 #define TRUE true
00156 #define FALSE false
00157 #endif
00158
00159 #if PLATAFORMA != PALM_PALMOS_CODEWARRIOR
00160 #define BOOLEAN int
00161 #ifndef _bool_h
00162 #define _bool_h
00163 #define TRUE 1
00164 #define FALSE 0
00165 #endif
00166 #endif
00167
00168 #if (PLATAFORMA != SGI) && (PLATAFORMA != SUN) && (PLATAFORMA != POWERPC_AIX_VACPP)
00169 #define BYTE unsigned char
00170 #endif
00171
00172 #if (PLATAFORMA == SGI) || (PLATAFORMA == SUN) || (PLATAFORMA == POWERPC_AIX_VACPP)
00173 #include <X11/Xmd.h>
00174 #endif
00175
00176 typedef short WORD;
00177 typedef unsigned long int DWORD;
00178 typedef unsigned short UWORD;
00179 extern double drand48 (void);
00180 #define SRANDOM(semilla) srand((semilla))
00181 #if PLATAFORMA != PALM_PALMOS_CODEWARRIOR
00182 #define RANDOM() ((double)((double)rand()/(double)RAND_MAX))
00183 #endif
00184 #if PLATAFORMA == PALM_PALMOS_CODEWARRIOR
00185 #define RANDOM() 0
00186 #endif
00187 #endif
00188
00189
00190 #if (PLATAFORMA != SGI) && (PLATAFORMA != i386_WIN32_VC) && (PLATAFORMA != SUN) && (PLATAFORMA != ALPHA) && (PLATAFORMA != POWERPC_AIX_VACPP)
00191 #define SOCK_INT unsigned int
00192 #endif
00193 #if (PLATAFORMA == SGI) || (PLATAFORMA == i386_WIN32_VC) || (PLATAFORMA == SUN) || (PLATAFORMA == ALPHA)
00194 #define SOCK_INT int
00195 #endif
00196 #if PLATAFORMA == POWERPC_AIX_VACPP
00197 #define SOCK_INT unsigned long
00198 #endif
00199
00200
00201
00202
00203
00204
00205
00206
00207 #define DISTANCIA(x1, y1, z1, x2, y2, z2) \
00208 (\
00209 sqrt(\
00210 (double)(\
00211 ((x2) - (x1)) * ((x2) - (x1)) + \
00212 ((y2) - (y1)) * ((y2) - (y1)) + \
00213 ((z2) - (z1)) * ((z2) - (z1))\
00214 ) \
00215 )\
00216 )
00217
00218 #define SQUARE(x) ((x)*(x))
00219
00220 #if PLATAFORMA != i386_WIN32_VC
00221 #ifndef DWORD
00222 #define DWORD unsigned long int
00223 #endif
00224 #endif
00225
00226 #if PLATAFORMA == PALM_PALMOS_CODEWARRIOR
00227 extern void PALM_setcolor(BYTE r, BYTE g, BYTE b);
00228 extern void PALM_putpixel(int x, int y, BYTE r, BYTE g, BYTE b);
00229 #endif
00230
00231
00232
00233
00234
00235 #ifndef M_PI
00236 #define M_PI 3.14159265358979323846
00237 #endif
00238
00239 #ifndef PI
00240 #define PI M_PI
00241 #endif
00242
00243 #define MAX_CAD 256
00244 #define UNDEFINED_CAD "<UNDEFINED>"
00245 #define EPSILON (1e-5)
00246 #define IGUAL(A,B) (fabs((A)-(B))<EPSILON)
00247 #define MINIMO(A,B) ((A)<(B)?(A):(B))
00248 #define MAXIMO(A,B) ((A)>(B)?(A):(B))
00249 #define INFINITO FLT_MAX
00250
00251
00252 #define DEG2RAD(a) ((PI * (a))/180)
00253 #define RAD2DEG(a) ((180 * (a))/PI)
00254 extern void
00255 DEG2gms(double angulo, float *grados, float *minutos, float *segundos);
00256 extern void
00257 DEG2hms(double angulo, float *horas,float *arco_minutos,float *arco_segundos);
00258
00259 #define INTERPOLAR_FLOAT(i, f, trozos, num_trocito) \
00260 ((double)i) \
00261 + \
00262 ((double)(num_trocito)) \
00263 * \
00264 ((((double)(f)) - ((double)(i)))/((double)(trozos)))
00265
00266 enum ENUM_TIPOS_DE_DATOS {
00267 T_NULL = 0,
00268 T_COMPLEX,
00269 T_BYTE,
00270 T_INT,
00271 T_FLOAT,
00272 T_VECTOR,
00273 T_QUATERNION,
00274 T_CADENA
00275 };
00276
00277
00278
00279
00280
00281 #if PLATAFORMA != PALM_PALMOS_CODEWARRIOR
00282 inline void
00283 lea_DATOS_directo(void *buffer, int tam, FILE *fd)
00291 {
00292 int code;
00293
00294 code = fread(buffer, tam, 1, fd);
00295 if( code != 1 ) {
00296 fprintf(stderr,
00297 "<AQUYNZA> - ERROR FATAL leyendo bytes de un archivo (%d).\n",
00298 code);
00299 if ( !fd ) fprintf(stderr, "<Archivo invalido>\n");
00300 fflush(stderr);
00301 exit(1);
00302 }
00303 }
00304
00305 inline void
00306 lea_DATOS_invertir(void *buffer, int tam, FILE *fd)
00314 {
00315 int code;
00316
00317 code = fread(buffer, tam, 1, fd);
00318 if( code != 1 ) {
00319 fprintf(stderr,
00320 "<AQUYNZA> - ERROR FATAL leyendo bytes de un archivo (%d).\n",
00321 code);
00322 if ( !fd ) fprintf(stderr, "<Archivo invalido>\n");
00323 fflush(stderr);
00324 exit(1);
00325 }
00326
00327 char *ptr, tmp1, tmp2, tmp3, tmp4;
00328
00329
00330 if (tam == 2) {
00331
00332 ptr = (char *)buffer;
00333 tmp1 = *ptr;
00334 *ptr = *(ptr + 1);
00335 *(ptr + 1) = tmp1;
00336 }
00337 else if (tam == 4) {
00338
00339 ptr = (char *)buffer;
00340 tmp1 = *ptr;
00341 tmp2 = *(ptr + 1);
00342 tmp3 = *(ptr + 2);
00343 tmp4 = *(ptr + 3);
00344 *ptr = tmp4;
00345 *(ptr + 1) = tmp3;
00346 *(ptr + 2) = tmp2;
00347 *(ptr + 3) = tmp1;
00348 }
00349 }
00350
00351 #define lea_BYTE(Dato, fd) fread((Dato), sizeof(BYTE), 1, fd);
00352
00353 #ifdef AQZ_BIG_ENDIAN
00354 #define lea_WORD_BE(Dato, fd) lea_DATOS_invertir((Dato), 2, fd);
00355 #define lea_WORD_LE(Dato, fd) lea_DATOS_directo((Dato), 2, fd);
00356 #define lea_DWORD_BE(Dato, fd) lea_DATOS_invertir((Dato), 4, fd);
00357 #define lea_DWORD_LE(Dato, fd) lea_DATOS_directo((Dato), 4, fd);
00358 #define lea_FLOAT32_BE(Dato, fd) lea_DATOS_invertir((Dato), 4, fd);
00359 #define lea_FLOAT32_LE(Dato, fd) lea_DATOS_directo((Dato), 4, fd);
00360 #endif
00361
00362 #ifndef AQZ_BIG_ENDIAN
00363 #define lea_WORD_LE(Dato, fd) lea_DATOS_invertir((Dato), 2, fd);
00364 #define lea_WORD_BE(Dato, fd) lea_DATOS_directo((Dato), 2, fd);
00365 #define lea_DWORD_LE(Dato, fd) lea_DATOS_invertir((Dato), 4, fd);
00366 #define lea_DWORD_BE(Dato, fd) lea_DATOS_directo((Dato), 4, fd);
00367 #define lea_FLOAT32_LE(Dato, fd) lea_DATOS_invertir((Dato), 4, fd);
00368 #define lea_FLOAT32_BE(Dato, fd) lea_DATOS_directo((Dato), 4, fd);
00369 #endif
00370
00371 #endif // PLATAFORMA != PALM_PALMOS_CODEWARRIOR
00372
00373
00374 #if PLATAFORMA == ALPHA
00375 #define _XOPEN_SOURCE_EXTENDED
00376 #include <unistd.h>
00377 #undef _XOPEN_SOURCE_EXTENDED
00378 #include <sys/ioctl.h>
00379 #endif
00380 #if PLATAFORMA == i386_LINUX_GCC || PLATAFORMA == SPARC64_LINUX_GCC
00381
00382 #ifndef __USE_BSD
00383 #define __USE_BSD // toca dejarlo aqui
00384 #endif
00385 #include <unistd.h>
00386 #endif
00387 #if PLATAFORMA == SUN // OJO: Esto deberia estar solo en jed_defs... pero
00388 #define __EXTENSIONS__ // toca dejarlo aqui
00389 #include <unistd.h>
00390 #endif
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436 #if PLATAFORMA != PALM_PALMOS_CODEWARRIOR
00437 #define FILESYSTEM_ENABLED
00438 #endif
00439
00440
00441 #if PLATAFORMA == i386_LINUX_GCC || PLATAFORMA == SPARC64_LINUX_GCC
00442 #define WXWINDOWS_ENABLED
00443 #endif
00444
00445 #ifdef WXWINDOWS_ENABLED
00446
00447
00448 #if PLATAFORMA == i386_LINUX_GCC || PLATAFORMA == SPARC64_LINUX_GCC
00449 #define __WXGTK__
00450 #define GTK_NO_CHECK_CASTS
00451 #endif
00452 #if PLATAFORMA == i386_WIN32_VC
00453 #define __WXMSW__
00454 #define _MT
00455 #define wxUSE_GUI 1
00456 #endif
00457 #endif
00458
00459 #if (PLATAFORMA == ALPHA || PLATAFORMA == i386_LINUX_GCC || PLATAFORMA == SGI || PLATAFORMA == SUN || PLATAFORMA == CYGNUS_WIN32 || PLATAFORMA == SPARC64_LINUX_GCC || PLATAFORMA == POWERPC_AIX_VACPP )
00460 #if PLATAFORMA != ANSI
00461 #define X_ENABLED
00462 #if PLATAFORMA != SPARC64_LINUX_GCC
00463 #define MOTIF_ENABLED
00464 #endif
00465
00466 #define GL_ENABLED
00467 #ifdef GL_ENABLED
00468 #define GLTT_ENABLED // OJO: Solo puede usarse si hay GL_ENABLED!
00469 #endif
00470 #ifdef GL_ENABLED
00471
00472 #endif
00473
00474 #ifndef CBUILDER
00475 #ifdef GL_ENABLED
00476 #define GLUT_ENABLED // OJO: Solo puede usarse si hay GL_ENABLED!
00477 #endif
00478 #endif
00479 #if (PLATAFORMA == i386_LINUX_GCC) || (PLATAFORMA == SUN) || (PLATAFORMA == CYGNUS_WIN32) || (PLATAFORMA == SPARC64_LINUX_GCC) || (PLATAFORMA == POWERPC_AIX_VACPP)
00480 #define JPEG_ENABLED
00481 #endif
00482 #if (PLATAFORMA == i386_LINUX_GCC) || (PLATAFORMA == SPARC64_LINUX_GCC)
00483 #define PNG_ENABLED
00484 #endif
00485 #endif
00486 #define UNIX_ENABLED
00487 #if PLATAFORMA != CYGNUS_WIN32
00488 #define SOCKETS_ENABLED
00489 #endif
00490 #endif
00491
00492 #if (PLATAFORMA == ALPHA || PLATAFORMA == i386_LINUX_GCC || PLATAFORMA == SUN || PLATAFORMA == i386_WIN32_VC || PLATAFORMA == SPARC64_LINUX_GCC)
00493 #define SERIALPORT_ENABLED
00494 #endif
00495
00496 #if PLATAFORMA == CYGNUS_WIN32
00497 #define UNIX_ENABLED
00498 #endif
00499
00500 #if PLATAFORMA == CRAY_J90
00501 #define UNIX_ENABLED
00502 extern void usleep(int s);
00503 #endif
00504
00505 #if PLATAFORMA == i386_WIN32_VC
00506 #define SOCKETS_ENABLED
00507 #define GL_ENABLED
00508 #ifdef GL_ENABLED
00509 #define GLTT_ENABLED // OJO: Solo puede usarse si hay GL_ENABLED!
00510 #endif
00511 #ifdef GL_ENABLED
00512 #define GLUT_ENABLED // OJO: Solo puede usarse si hay GL_ENABLED!
00513 #endif
00514
00515
00516
00517 #endif
00518
00519 #ifdef CBUILDER
00520 #define OWL_ENABLED
00521 #endif
00522
00523
00524
00525
00526
00527 #if (PLATAFORMA == ALPHA || PLATAFORMA == i386_LINUX_GCC || PLATAFORMA == SPARC64_LINUX_GCC)
00528
00529 #endif
00530
00531 #if (PLATAFORMA == SUN)
00532
00533 #endif
00534
00535 #ifdef VEL_ROSITA
00536 #define GL_ENABLED
00537 #define GLTT_ENABLED
00538 #define GLUT_ENABLED
00539 #endif
00540
00541 #if PLATAFORMA == i386_LINUX_GCC || PLATAFORMA == SPARC64_LINUX_GCC
00542
00543 #define JOYSTICK_ENABLED
00544 #endif
00545 #if PLATAFORMA == i386_WIN32_VC // OJO: esto depende de DirectInput 6.x
00546
00547
00548 #endif
00549
00550 #if ((PLATAFORMA == SUN)) || (PLATAFORMA == POWERPC_AIX_VACPP)
00551 #if defined(GL_ENABLED) && !defined(X86SOL2_ENABLED)
00552
00553
00554 #include <GL/glxmd.h>
00555 #else
00556 #define FLOAT32 float
00557 #endif
00558 #endif
00559
00560
00561
00562
00563
00564 #endif // __JEDILINK_DEFINITION__
00565