You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
(27) |
Apr
(11) |
May
(112) |
Jun
(8) |
Jul
(10) |
Aug
(68) |
Sep
(12) |
Oct
(3) |
Nov
(19) |
Dec
(3) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(15) |
Mar
(20) |
Apr
(22) |
May
(131) |
Jun
(27) |
Jul
(19) |
Aug
(207) |
Sep
(61) |
Oct
(27) |
Nov
(28) |
Dec
(21) |
| 2004 |
Jan
(7) |
Feb
(25) |
Mar
(14) |
Apr
(55) |
May
(15) |
Jun
(2) |
Jul
(14) |
Aug
(28) |
Sep
(29) |
Oct
|
Nov
|
Dec
|
|
From: John M M. <jo...@us...> - 2002-09-27 19:58:23
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/plugins/B3DAcceleratorPlugin
In directory usw-pr-cvs1:/tmp/cvs-serv13722/squeak/platforms/Mac OS/plugins/B3DAcceleratorPlugin
Modified Files:
sqMacOpenGL.c
Log Message:
3.2.8b8 changes per Andreas instructions for TEA support
Index: sqMacOpenGL.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/plugins/B3DAcceleratorPlugin/sqMacOpenGL.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** sqMacOpenGL.c 31 May 2002 16:49:42 -0000 1.6
--- sqMacOpenGL.c 27 Sep 2002 19:58:20 -0000 1.7
***************
*** 250,258 ****
}
! int glCreateRenderer(int allowSoftware, int allowHardware, int x, int y, int w, int h)
{
! int index, i;
! GLint hwAttrib[] = { AGL_RGBA, AGL_DOUBLEBUFFER, AGL_ACCELERATED, AGL_DEPTH_SIZE, 16, AGL_NONE };
! GLint swAttrib[] = { AGL_RGBA, AGL_PIXEL_SIZE, 0, AGL_OFFSCREEN, AGL_DEPTH_SIZE, 16, AGL_NONE };
AGLPixelFormat fmt;
AGLContext ctx;
--- 250,258 ----
}
! int glCreateRendererFlags(int x, int y, int w, int h, int flags)
{
! int index, i, allowSoftware, allowHardware;
! GLint hwAttrib[] = { AGL_STENCIL_SIZE, 0, AGL_RGBA, AGL_DOUBLEBUFFER, AGL_ACCELERATED, AGL_DEPTH_SIZE, 16, AGL_NONE};
! GLint swAttrib[] = { AGL_STENCIL_SIZE, 0, AGL_RGBA, AGL_PIXEL_SIZE, 0, AGL_OFFSCREEN, AGL_DEPTH_SIZE, 16, AGL_NONE };
AGLPixelFormat fmt;
AGLContext ctx;
***************
*** 263,267 ****
char *string;
GDHandle tempGDH;
! Rect ignore;
for(index=0; index < MAX_RENDERER; index++) {
--- 263,282 ----
char *string;
GDHandle tempGDH;
! Rect ignore;
!
! #define SUPPORTED_FLAGS (B3D_HARDWARE_RENDERER | B3D_SOFTWARE_RENDERER | B3D_STENCIL_BUFFER)
! if(flags & ~SUPPORTED_FLAGS) {
! DPRINTF(1, (fp, "ERROR: Unsupported renderer flags (%d)\n", flags));
! return -1;
! }
! #undef SUPPORTED_FLAGS
!
! /* interpret renderer flags */
! allowSoftware = (flags & B3D_SOFTWARE_RENDERER) != 0;
! allowHardware = (flags & B3D_HARDWARE_RENDERER) != 0;
! if(flags & B3D_STENCIL_BUFFER) {
! hwAttrib[1] = 1;
! swAttrib[1] = 1;
! }
for(index=0; index < MAX_RENDERER; index++) {
|
|
From: John M M. <jo...@us...> - 2002-09-27 19:57:55
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/plugins/SocketPlugin
In directory usw-pr-cvs1:/tmp/cvs-serv13569/squeak/platforms/Mac OS/plugins/SocketPlugin
Modified Files:
sqMacNetwork.c
Log Message:
3.2.8b8 Add support for IP_ADD/DROPMEMBERSHIP for joining UDP broadcasting groups. Also allow binding to port 0.
Index: sqMacNetwork.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/plugins/SocketPlugin/sqMacNetwork.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** sqMacNetwork.c 18 Dec 2001 21:24:52 -0000 1.2
--- sqMacNetwork.c 27 Sep 2002 19:57:51 -0000 1.3
***************
*** 62,65 ****
--- 62,66 ----
v1.3.11 Nov 11th 2000, JMM extra buffer for server version
v1.3.12 Jan 2001, Karl Goiser Carbon changes
+ v1.3.13 Sept 2002, JMM fixes for wildcard port binding, and IP_ADD_MEMBERSHIP logic
Notes beware semaphore's lurk for socket support. Three semaphores lives in Smalltalk, waiting for
***************
*** 306,309 ****
--- 307,311 ----
static UInt32 readBytesUDP(EPInfo* epi,InetAddress *fromAddress, int *moreFlag, char *buf,UInt32 adjustedBufSize);
static SInt32 lookupOptionName(EPInfo *epi, Boolean trueIfGet, char *aString, UInt32 value, SInt32 *result);
+ static OTResult SetEightByteOption(EPInfo* epi, Boolean trueIfGet, OTXTILevel level, OTXTIName name, char * value, SInt32 *result);
static OTResult SetFourByteOption(EPInfo* epi, Boolean trueIfGet, OTXTILevel level, OTXTIName name, UInt32 value, SInt32 *result);
static OTResult SetOneByteOption(EPInfo* epi, Boolean trueIfGet, OTXTILevel level, OTXTIName name, UInt32 value, SInt32 *result);
***************
*** 766,770 ****
if (s->socketType == TCPSocketType) {
DoBind(epi,0,(InetPort) port,TCPListenerSocketType,1);
! if (epi->localAddress.fPort != port) {//We die if we don't get the port we want
sqSocketDestroy(s);
interpreterProxy->success(false);
--- 768,772 ----
if (s->socketType == TCPSocketType) {
DoBind(epi,0,(InetPort) port,TCPListenerSocketType,1);
! if (port != 0 && epi->localAddress.fPort != port) {//We die if we don't get the port we want
sqSocketDestroy(s);
interpreterProxy->success(false);
***************
*** 799,803 ****
epi = (EPInfo *) s->privateSocketPtr;
DoBind(epi,0,(InetPort) port,TCPListenerSocketType,(OTQLen) backlogSize);
! if (epi->localAddress.fPort != port) {//The port we wanted must match, otherwise we die
sqSocketDestroy(s);
interpreterProxy->success(false);
--- 801,805 ----
epi = (EPInfo *) s->privateSocketPtr;
DoBind(epi,0,(InetPort) port,TCPListenerSocketType,(OTQLen) backlogSize);
! if (port != 0 && epi->localAddress.fPort != port) {//The port we wanted must match, otherwise we die
sqSocketDestroy(s);
interpreterProxy->success(false);
***************
*** 2352,2359 ****
OTMemcpy(optionValue,(char *) optionValueT,optionValueSize);
optionValue[optionValueSize] = 0x00;
! CopyCStringToPascal(optionValue,(unsigned char *) optionValue);
! StringToNum((ConstStr255Param) optionValue,&anInteger);
!
! error = lookupOptionName(epi, false, (char *) &optionName, anInteger,(long *) result);
return error;
}
--- 2354,2364 ----
OTMemcpy(optionValue,(char *) optionValueT,optionValueSize);
optionValue[optionValueSize] = 0x00;
! if (optionValueSize == 8) {
! error = lookupOptionName(epi, false, (char *) &optionName, (long) &optionValue ,(long *) result);
! } else {
! CopyCStringToPascal(optionValue,(unsigned char *) optionValue);
! StringToNum((ConstStr255Param) optionValue,&anInteger);
! error = lookupOptionName(epi, false, (char *) &optionName, anInteger,(long *) result);
! }
return error;
}
***************
*** 2416,2426 ****
if (strcmp("IP_MULTICAST_TTL",aString)==0) {return SetOneByteOption(epi,trueIfGet,INET_IP,kIP_MULTICAST_TTL,value,result);};
if (strcmp("IP_MULTICAST_LOOP",aString)==0) {return SetOneByteOption(epi,trueIfGet,INET_IP,kIP_MULTICAST_LOOP,value,result);};
! /* if (strcmp("IP_ADD_MEMBERSHIP",aString)==0) { return SetJMMByteOption(epi,trueIfGet,INET_IP,IP_ADD_MEMBERSHIP,value,result);};
! if (strcmp("IP_DROP_MEMBERSHIP",aString)==0) { return SetJMMByteOption(epi,trueIfGet,INET_IP,IP_DROP_MEMBERSHIP,value,result);};
! if (strcmp("IP_BROADCAST_IF",aString)==0) {return SetFourByteOption(epi,trueIfGet,INET_IP,IP_BROADCAST_IF,value,result);};
! if (strcmp("IP_RCVIFADDR",aString)==0) {return SetFourByteOption(epi,trueIfGet,INET_IP,IP_RCVIFADDR,value,result);}; */
*result = 0;
return -1;
}
--- 2421,2478 ----
if (strcmp("IP_MULTICAST_TTL",aString)==0) {return SetOneByteOption(epi,trueIfGet,INET_IP,kIP_MULTICAST_TTL,value,result);};
if (strcmp("IP_MULTICAST_LOOP",aString)==0) {return SetOneByteOption(epi,trueIfGet,INET_IP,kIP_MULTICAST_LOOP,value,result);};
! if (strcmp("IP_ADD_MEMBERSHIP",aString)==0) { return SetEightByteOption(epi,trueIfGet,INET_IP,kIP_ADD_MEMBERSHIP,(char *) value,result);};
! if (strcmp("IP_DROP_MEMBERSHIP",aString)==0) { return SetEightByteOption(epi,trueIfGet,INET_IP,kIP_DROP_MEMBERSHIP,(char *) value,result);};
! if (strcmp("IP_BROADCAST_IFNAME",aString)==0) {return SetFourByteOption(epi,trueIfGet,INET_IP,kIP_BROADCAST_IFNAME,value,result);};
! if (strcmp("IP_RCVIFADDR",aString)==0) {return SetFourByteOption(epi,trueIfGet,INET_IP,kIP_RCVIFADDR,value,result);};
*result = 0;
return -1;
+ }
+
+ static OTResult SetEightByteOption(EPInfo* epi,Boolean trueIfGet, OTXTILevel level, OTXTIName name, char * value, SInt32 *returnValue) {
+ OTResult err;
+ UInt8 optBuffer[kOTFourByteOptionSize+4];
+ TOption *option = (TOption *) &optBuffer;
+ TOptMgmt request;
+ TOptMgmt result;
+ Boolean isAsync=false;
+
+ /* Set up the option buffer to specify the option and value to set. */
+ option->len = kOTFourByteOptionSize+4;
+ option->level= level;
+ option->name = name;
+ option->status = 0;
+ if (!trueIfGet)
+ OTMemcpy(option->value,value,8);
+
+ /* Set up request parameter for OTOptionManagement */
+ request.opt.buf= (UInt8 *) option;
+ request.opt.len= sizeof(optBuffer);
+ request.opt.maxlen=sizeof(optBuffer);
+ request.flags = trueIfGet ? T_CURRENT : T_NEGOTIATE;
+
+ /* Set up reply parameter for OTOptionManagement. */
+ result.opt.buf = (UInt8 *) option;
+ result.opt.maxlen = sizeof(optBuffer);
+
+ if (OTIsSynchronous(epi->erf) == false) { // check whether ep sync or not
+ isAsync = true; // set flag if async
+ OTSetSynchronous(epi->erf); // set endpoint to sync
+ }
+
+
+ err = OTOptionManagement(epi->erf, &request, &result);
+
+ if (isAsync) // restore ep state
+ OTSetAsynchronous(epi->erf);
+
+ *returnValue = option->value[0];
+
+ if (err == noErr) {
+ if (option->status != T_SUCCESS)
+ err = option->status;
+ }
+
+ return (err);
}
|
|
From: John M M. <jo...@us...> - 2002-09-07 07:36:13
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video
In directory usw-pr-cvs1:/tmp/cvs-serv4927/squeak/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video
Modified Files:
output.c
Log Message:
1.3 Add clip arrays for blue screening and alpha channel logic. Also some minor tuning
Index: output.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/output.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** output.c 5 May 2002 18:52:56 -0000 1.2
--- output.c 7 Sep 2002 07:36:08 -0000 1.3
***************
*** 30,36 ****
/* Changed Sept 15th by John M McIntosh to support Macintosh & Squeak
Feb/march 2001, JMM tuning for the mac
! I've coded up mpeg3video_ditherframeFastRGB555 and mpeg3video_ditherframeFastRGBA which
do specialized 16 and 32 bit Crb to rgb mapping (Intel should do this too?)
I also coded up clip arrays versus using CLIP() This avoid test/branchs which slows things down
*/
#include "libmpeg3.h"
--- 30,37 ----
/* Changed Sept 15th by John M McIntosh to support Macintosh & Squeak
Feb/march 2001, JMM tuning for the mac
! I've coded up mpeg3video_ditherframeFastRGB555 and mpeg3video_ditherframeFastARGB which
do specialized 16 and 32 bit Crb to rgb mapping (Intel should do this too?)
I also coded up clip arrays versus using CLIP() This avoid test/branchs which slows things down
+ Sept 2002, JMM added clip arrays to enable blue screening and value for alpha channel
*/
#include "libmpeg3.h"
***************
*** 38,47 ****
#include <string.h>
! unsigned char gClipArray[1026];
! unsigned short gClipArray16r[1026],gClipArray16g[1026],gClipArray16b[1026];
! unsigned char *gClipArray_ptr=&gClipArray[512];
! unsigned short *gClipArray_ptr16r=&gClipArray16r[512];
! unsigned short *gClipArray_ptr16g=&gClipArray16g[512];
! unsigned short *gClipArray_ptr16b=&gClipArray16b[512];
int doClippingArrays=1;
--- 39,44 ----
#include <string.h>
! unsigned char gClipArray[1028];
! unsigned short gClipArray16r[1028],gClipArray16g[1028],gClipArray16b[1028];
int doClippingArrays=1;
***************
*** 515,542 ****
#define STORE_PIXEL_BGR888 \
! *data++ = clipArray_ptr[b_l]; \
! *data++ = clipArray_ptr[g_l]; \
! *data++ = clipArray_ptr[r_l];
#define STORE_PIXEL_BGRA8888 \
! *data++ = clipArray_ptr[b_l]; \
! *data++ = clipArray_ptr[g_l]; \
! *data++ = clipArray_ptr[r_l]; \
! *data++ = 0;
#define STORE_PIXEL_RGB565 \
! foo = ((clipArray_ptr[r_l] & 0xf8) << 8) | \
! ((clipArray_ptr[g_l] & 0xfc) << 3) | \
! ((clipArray_ptr[b_l] & 0xf8) >> 3); *(unsigned short*)data = foo; data += 2;
#define STORE_PIXEL_RGB555 \
! foo = ((clipArray_ptr[r_l] & 0xf8) << 7) | \
! ((clipArray_ptr[g_l] & 0xf8) << 2) | \
! ((clipArray_ptr[b_l] & 0xf8) >> 3); *(unsigned short*)data = foo; data += 2;
#define STORE_PIXEL_RGBI555 \
! foo = ((clipArray_ptr[r_l] & 0xf8) << 7) | \
! ((clipArray_ptr[g_l] & 0xf8) << 2) | \
! ((clipArray_ptr[b_l] & 0xf8) >> 3); \
if((unsigned long)data & 0x00000002L) { \
data -= 2; \
--- 512,539 ----
#define STORE_PIXEL_BGR888 \
! *data++ = clipArray_ptr_B[b_l]; \
! *data++ = clipArray_ptr_G[g_l]; \
! *data++ = clipArray_ptr_R[r_l];
#define STORE_PIXEL_BGRA8888 \
! *data++ = clipArray_ptr_B[b_l]; \
! *data++ = clipArray_ptr_G[g_l]; \
! *data++ = clipArray_ptr_R[r_l]; \
! *data++ = alphaChannelValue;
#define STORE_PIXEL_RGB565 \
! foo = ((clipArray_ptr_R[r_l] & 0xf8) << 8) | \
! ((clipArray_ptr_G[g_l] & 0xfc) << 3) | \
! ((clipArray_ptr_B[b_l] & 0xf8) >> 3); *(unsigned short*)data = foo; data += 2;
#define STORE_PIXEL_RGB555 \
! foo = ((clipArray_ptr_R[r_l] & 0xf8) << 7) | \
! ((clipArray_ptr_G[g_l] & 0xf8) << 2) | \
! ((clipArray_ptr_B[b_l] & 0xf8) >> 3); *(unsigned short*)data = foo; data += 2;
#define STORE_PIXEL_RGBI555 \
! foo = ((clipArray_ptr_R[r_l] & 0xf8) << 7) | \
! ((clipArray_ptr_G[g_l] & 0xf8) << 2) | \
! ((clipArray_ptr_B[b_l] & 0xf8) >> 3); \
if((unsigned long)data & 0x00000002L) { \
data -= 2; \
***************
*** 550,575 ****
#define STORE_PIXEL_RGB888 \
! *data++ = clipArray_ptr[r_l]; \
! *data++ = clipArray_ptr[g_l]; \
! *data++ = clipArray_ptr[b_l];
#define STORE_PIXEL_RGBA8888 \
! *data++ = clipArray_ptr[r_l]; \
! *data++ = clipArray_ptr[g_l]; \
! *data++ = clipArray_ptr[b_l]; \
! *data++ = 0;
#define STORE_PIXEL_ARGB8888 \
! *data++ = 0; \
! *data++ = clipArray_ptr[r_l]; \
! *data++ = clipArray_ptr[g_l]; \
! *data++ = clipArray_ptr[b_l];
#define STORE_PIXEL_RGBA16161616 \
! *data_s++ = clipArray_ptr[r_l]; \
! *data_s++ = clipArray_ptr[g_l]; \
! *data_s++ = clipArray_ptr[b_l]; \
! *data_s++ = 0;
!
--- 547,572 ----
#define STORE_PIXEL_RGB888 \
! *data++ = clipArray_ptr_R[r_l]; \
! *data++ = clipArray_ptr_G[g_l]; \
! *data++ = clipArray_ptr_B[b_l];
#define STORE_PIXEL_RGBA8888 \
! *data++ = clipArray_ptr_R[r_l]; \
! *data++ = clipArray_ptr_G[g_l]; \
! *data++ = clipArray_ptr_B[b_l]; \
! *data++ = alphaChannelValue;
#define STORE_PIXEL_ARGB8888 \
! *data++ = alphaChannelValue; \
! *data++ = clipArray_ptr_R[r_l]; \
! *data++ = clipArray_ptr_G[g_l]; \
! *data++ = clipArray_ptr_B[b_l];
#define STORE_PIXEL_RGBA16161616 \
! *data_s++ = clipArray_ptr_R[r_l]; \
! *data_s++ = clipArray_ptr_G[g_l]; \
! *data_s++ = clipArray_ptr_B[b_l]; \
! *data_s++ = alphaChannelValue;
! /* JMM broken for 16 bit color here */
***************
*** 578,584 ****
{
int h = 0;
! register unsigned char *y_in, *cb_in, *cr_in;
long y_l, r_l, b_l, g_l;
! register unsigned char *data,*clipArray_ptr=gClipArray_ptr;
register int uv_subscript, step, w = -1;
register short foo;
--- 575,584 ----
{
int h = 0;
! register unsigned char *y_in, *cb_in, *cr_in,alphaChannelValue=video->alphaChannelValue;
long y_l, r_l, b_l, g_l;
! register unsigned char *data,
! *clipArray_ptr_R=&video->clipArray_Red[512],
! *clipArray_ptr_G=&video->clipArray_Green[512],
! *clipArray_ptr_B=&video->clipArray_Blue[512];
register int uv_subscript, step, w = -1;
register short foo;
***************
*** 971,975 ****
else
if (video->color_model == MPEG3_ARGB8888)
! return mpeg3video_ditherframeFastRGBA(video, src, video->output_rows);
else
return mpeg3video_ditherframe(video, src, video->output_rows);
--- 971,975 ----
else
if (video->color_model == MPEG3_ARGB8888)
! return mpeg3video_ditherframeFastARGB(video, src, video->output_rows);
else
return mpeg3video_ditherframe(video, src, video->output_rows);
***************
*** 1031,1043 ****
}
! int mpeg3video_ditherframeFastRGBA(mpeg3video_t *video, unsigned char **src, unsigned char **output_rows) {
int h = 0;
! register unsigned char *y_in, *cb_in, *cr_in, *clipArray_ptr;
long y_l, r_l, b_l, g_l;
register unsigned long *data;
register int uv_subscript, step, w = -1,t1,t2;
! register long *cr_to_gPtr,*cr_to_rPtr,*cb_to_bPtr,*cb_to_gPtr;;
!
! clipArray_ptr = gClipArray_ptr;
cr_to_rPtr = &video->cr_to_r[0];
cr_to_gPtr = &video->cr_to_g[0];
--- 1031,1048 ----
}
! int mpeg3video_ditherframeFastARGB(mpeg3video_t *video, unsigned char **src, unsigned char **output_rows) {
int h = 0;
! register unsigned char *y_in, *cb_in, *cr_in, *clipArray_ptr_R, *clipArray_ptr_G, *clipArray_ptr_B;
long y_l, r_l, b_l, g_l;
register unsigned long *data;
register int uv_subscript, step, w = -1,t1,t2;
! register long *cr_to_gPtr,*cr_to_rPtr,*cb_to_bPtr,*cb_to_gPtr;
! unsigned long alphaChannelValue_t;
!
! clipArray_ptr_R = &video->clipArray_Red[512];
! clipArray_ptr_G = &video->clipArray_Green[512];
! clipArray_ptr_B = &video->clipArray_Blue[512];
! alphaChannelValue_t = video->alphaChannelValue << 24;
!
cr_to_rPtr = &video->cr_to_r[0];
cr_to_gPtr = &video->cr_to_g[0];
***************
*** 1061,1065 ****
r_l = (r_l + cr_to_rPtr[*cr_in]) >> 16;
b_l = (b_l + cb_to_bPtr[*cb_in]) >> 16;
! *data++ = (clipArray_ptr[r_l] << 16) | (clipArray_ptr[g_l] << 8) | clipArray_ptr[b_l];
if(w & 1) {
cr_in++;
--- 1066,1070 ----
r_l = (r_l + cr_to_rPtr[*cr_in]) >> 16;
b_l = (b_l + cb_to_bPtr[*cb_in]) >> 16;
! *data++ = alphaChannelValue_t | (clipArray_ptr_R[r_l] << 16) | (clipArray_ptr_G[g_l] << 8) | clipArray_ptr_B[b_l];
if(w & 1) {
cr_in++;
***************
*** 1077,1081 ****
r_l = (r_l + cr_to_rPtr[t1]) >> 16;
b_l = (b_l + cb_to_bPtr[t2]) >> 16;
! *data++ = (clipArray_ptr[r_l] << 16) | (clipArray_ptr[g_l] << 8) | clipArray_ptr[b_l];
}
}
--- 1082,1086 ----
r_l = (r_l + cr_to_rPtr[t1]) >> 16;
b_l = (b_l + cb_to_bPtr[t2]) >> 16;
! *data++ = alphaChannelValue_t | (clipArray_ptr_R[r_l] << 16) | (clipArray_ptr_G[g_l] << 8) | clipArray_ptr_B[b_l];
}
}
***************
*** 1086,1107 ****
int mpeg3video_ditherframeFastRGB555(mpeg3video_t *video, unsigned char **src, unsigned char **output_rows) {
int h = 0;
- register unsigned char *y_in, *cb_in, *cr_in, *clipArray_ptr;
- register unsigned short *clipArray_ptr16r,*clipArray_ptr16g,*clipArray_ptr16b;
long y_l, r_l, b_l, g_l;
! register unsigned short *data;
! register int uv_subscript, step, w = -1,t1,t2;
! register long *cr_to_gPtr,*cr_to_rPtr,*cb_to_bPtr,*cb_to_gPtr;;
! clipArray_ptr = gClipArray_ptr;
! clipArray_ptr16r = gClipArray_ptr16r;
! clipArray_ptr16g = gClipArray_ptr16g;
! clipArray_ptr16b = gClipArray_ptr16b;
! cr_to_rPtr = &video->cr_to_r[0];
cr_to_gPtr = &video->cr_to_g[0];
cb_to_bPtr = &video->cb_to_b[0];
cb_to_gPtr = &video->cb_to_g[0];
! for(h = 0; h < video->out_h; h++)
! {
t1 = video->y_table[h] + video->in_y;
t2 = (t1 >> 1) * video->chrom_width;
--- 1091,1110 ----
int mpeg3video_ditherframeFastRGB555(mpeg3video_t *video, unsigned char **src, unsigned char **output_rows) {
int h = 0;
long y_l, r_l, b_l, g_l;
! unsigned char *y_in, *cb_in, *cr_in;
! unsigned short *clipArray_ptr16r,*clipArray_ptr16g,*clipArray_ptr16b,*data;
! int w,t1,t2;
! long *cr_to_gPtr,*cr_to_rPtr,*cb_to_bPtr,*cb_to_gPtr;;
! clipArray_ptr16r = &video->clipArray16_Red[512];
! clipArray_ptr16g = &video->clipArray16_Green[512];
! clipArray_ptr16b = &video->clipArray16_Blue[512];
! cr_to_rPtr = &video->cr_to_r[0];
cr_to_gPtr = &video->cr_to_g[0];
cb_to_bPtr = &video->cb_to_b[0];
cb_to_gPtr = &video->cb_to_g[0];
! if(video->out_w == video->horizontal_size) {
! for(h = 0; h < video->out_h; h++) {
t1 = video->y_table[h] + video->in_y;
t2 = (t1 >> 1) * video->chrom_width;
***************
*** 1111,1116 ****
data = (unsigned short*) output_rows[h];
! if(video->out_w == video->horizontal_size) {
! for(w = 0; w < video->horizontal_size; w++) {
y_l = *y_in++;
r_l = g_l = b_l = y_l << 16;
--- 1114,1118 ----
data = (unsigned short*) output_rows[h];
! for (w = 0; w < video->horizontal_size; w++) {
y_l = *y_in++;
r_l = g_l = b_l = y_l << 16;
***************
*** 1118,1132 ****
r_l = (r_l + cr_to_rPtr[*cr_in]) >> 16;
b_l = (b_l + cb_to_bPtr[*cb_in]) >> 16;
! *data++ = clipArray_ptr16r[r_l] |
clipArray_ptr16g[g_l] |
clipArray_ptr16b[b_l];
if(w & 1) {
! cr_in++;
! cb_in++;
! }
}
! } else {
! for(w = 0; w < video->out_w; w++)
! {
uv_subscript = video->x_table[w] / 2;
r_l = g_l = b_l = (y_in[video->x_table[w]]) << 16;
--- 1120,1145 ----
r_l = (r_l + cr_to_rPtr[*cr_in]) >> 16;
b_l = (b_l + cb_to_bPtr[*cb_in]) >> 16;
! *data++ = clipArray_ptr16r[r_l] |
clipArray_ptr16g[g_l] |
clipArray_ptr16b[b_l];
+
if(w & 1) {
! cr_in++;
! cb_in++;
! }
}
! }
! } else {
! int uv_subscript;
!
! for(h = 0; h < video->out_h; h++) {
! t1 = video->y_table[h] + video->in_y;
! t2 = (t1 >> 1) * video->chrom_width;
! y_in = &src[0][t1 * video->coded_picture_width] + video->in_x;
! cb_in = &src[1][t2] + (video->in_x >> 2);
! cr_in = &src[2][t2] + (video->in_x >> 1);
! data = (unsigned short*) output_rows[h];
!
! for (w = 0; w < video->out_w; w++) {
uv_subscript = video->x_table[w] / 2;
r_l = g_l = b_l = (y_in[video->x_table[w]]) << 16;
***************
*** 1139,1145 ****
clipArray_ptr16g[g_l] |
clipArray_ptr16b[b_l];
! }
}
! }
--- 1152,1159 ----
clipArray_ptr16g[g_l] |
clipArray_ptr16b[b_l];
!
}
! }
! }
***************
*** 1152,1168 ****
unsigned char **src = video->output_src;
- if (doClippingArrays) {
- for(h=-512;h<=512;h++) {
- gClipArray_ptr[h]=CLIP(h);
- gClipArray_ptr16r[h]=(CLIP(h) & 0xf8) << 7;
- gClipArray_ptr16g[h]=(CLIP(h) & 0xf8) << 2;
- gClipArray_ptr16b[h]=(CLIP(h) & 0xf8) >> 3;
- if (gClipArray_ptr[h] == 0x00)
- gClipArray_ptr[h] = 0x01;
- if (gClipArray_ptr16b[h] == 0x00)
- gClipArray_ptr16b[h] = 0x01;
- }
- doClippingArrays = 0;
- }
/* Copy YUV buffers */
--- 1166,1169 ----
***************
*** 1225,1229 ****
else
if (video->color_model == MPEG3_ARGB8888)
! mpeg3video_ditherframeFastRGBA(video, src, video->output_rows);
else
mpeg3video_ditherframe(video, src, video->output_rows);
--- 1226,1230 ----
else
if (video->color_model == MPEG3_ARGB8888)
! mpeg3video_ditherframeFastARGB(video, src, video->output_rows);
else
mpeg3video_ditherframe(video, src, video->output_rows);
***************
*** 1272,1273 ****
--- 1273,1312 ----
return 0;
}
+
+ void doClipArrays(mpeg3_t *file) {
+ long h,i;
+
+ if (doClippingArrays) {
+
+ for(h=-512;h<=512;h++) {
+ gClipArray[h+512]=CLIP(h);
+ gClipArray16r[h+512]=(CLIP(h) & 0xf8) << 7;
+ gClipArray16g[h+512]=(CLIP(h) & 0xf8) << 2;
+ gClipArray16b[h+512]=(CLIP(h) & 0xf8) >> 3;
+ if (gClipArray[h+512] == 0x00)
+ gClipArray[h+512] = 0x01;
+ if (gClipArray16b[h+512] == 0x00)
+ gClipArray16b[h+512] = 0x01;
+ }
+ doClippingArrays = 0;
+ }
+
+ for(h=0;h<file->total_vstreams;h++) {
+ memcpy(&file->vtrack[h]->video->clipArray_Red,&gClipArray,1028);
+ memcpy(&file->vtrack[h]->video->clipArray_Green,&gClipArray,1028);
+ memcpy(&file->vtrack[h]->video->clipArray_Blue,&gClipArray,1028);
+ memcpy(&file->vtrack[h]->video->clipArray16_Red,&gClipArray16r,1028*2);
+ memcpy(&file->vtrack[h]->video->clipArray16_Green,&gClipArray16g,1028*2);
+ memcpy(&file->vtrack[h]->video->clipArray16_Blue,&gClipArray16b,1028*2);
+ file->vtrack[h]->video->alphaChannelValue =0x00;
+ for(i=0;i<256;i++) {
+ file->vtrack[h]->video->blueScreenMappingR[i] = i;
+ file->vtrack[h]->video->blueScreenMappingG[i] = i;
+ file->vtrack[h]->video->blueScreenMappingB[i] = i;
+ }
+ file->vtrack[h]->video->blueScreenMappingR[0] = 1;
+ file->vtrack[h]->video->blueScreenMappingG[0] = 1;
+ file->vtrack[h]->video->blueScreenMappingB[0] = 1;
+ }
+ }
+
|
|
From: John M M. <jo...@us...> - 2002-09-07 07:34:54
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video In directory usw-pr-cvs1:/tmp/cvs-serv4655/squeak/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video Modified Files: mpeg3video.h Log Message: 1.3 Add clip arrays and mapping arrays and alpha channel data to video stream structure. Index: mpeg3video.h =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/mpeg3video.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** mpeg3video.h 24 Oct 2001 23:12:18 -0000 1.1.1.1 --- mpeg3video.h 7 Sep 2002 07:34:51 -0000 1.2 *************** *** 159,162 **** --- 159,172 ---- int pict_scal; /* picture spatial scalable extension */ int scalable_mode; /* sequence scalable extension */ + int alphaChannelValue; + unsigned char blueScreenMappingR[256]; + unsigned char blueScreenMappingG[256]; + unsigned char blueScreenMappingB[256]; + unsigned char clipArray_Red[1028]; + unsigned char clipArray_Green[1028]; + unsigned char clipArray_Blue[1028]; + unsigned short clipArray16_Red[1028]; + unsigned short clipArray16_Green[1028]; + unsigned short clipArray16_Blue[1028]; } mpeg3video_t; |
|
From: John M M. <jo...@us...> - 2002-09-07 07:33:59
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/Mpeg3Plugin/libmpeg
In directory usw-pr-cvs1:/tmp/cvs-serv4495/squeak/platforms/Cross/plugins/Mpeg3Plugin/libmpeg
Modified Files:
mpeg3demux.c
Log Message:
1.3 Bug fix in mpe3_get_packet_header per instructions from original sourceforge project
Index: mpeg3demux.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/mpeg3demux.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** mpeg3demux.c 24 Oct 2001 23:12:12 -0000 1.1.1.1
--- mpeg3demux.c 7 Sep 2002 07:33:56 -0000 1.2
***************
*** 448,452 ****
if(i & 0x40000000 || (i >> 28) == 2)
{
! clock_ref = ((i & 0x31000000) << 3);
clock_ref |= ((i & 0x03fff800) << 4);
clock_ref |= ((i & 0x000003ff) << 5);
--- 448,452 ----
if(i & 0x40000000 || (i >> 28) == 2)
{
! clock_ref = ((i & 0x38000000) << 3); // JMM fix was 0x31 see http://sourceforge.net/tracker/index.php?func=detail&aid=439528&group_id=13554&atid=313554
clock_ref |= ((i & 0x03fff800) << 4);
clock_ref |= ((i & 0x000003ff) << 5);
|
|
From: John M M. <jo...@us...> - 2002-09-07 07:32:51
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/Mpeg3Plugin/libmpeg
In directory usw-pr-cvs1:/tmp/cvs-serv4305/squeak/platforms/Cross/plugins/Mpeg3Plugin/libmpeg
Modified Files:
changesForSqueak.c
Log Message:
1.3 Added logic for clip tables for blue screening and for alpha channel
Index: changesForSqueak.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/changesForSqueak.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** changesForSqueak.c 1 Jun 2002 05:23:00 -0000 1.5
--- changesForSqueak.c 7 Sep 2002 07:32:48 -0000 1.6
***************
*** 352,354 ****
--- 352,386 ----
}
+ int mpeg3_get_transparent (mpeg3_t *file, int aStream) {
+ return file->vtrack[aStream]->video->alphaChannelValue;
+ }
+
+ int mpeg3_set_transparent (mpeg3_t *file, int aNumber, int aStream) {
+ file->vtrack[aStream]->video->alphaChannelValue = aNumber & 0xFF;
+ }
+
+ int mpeg3_set_ClipData (mpeg3_t *file, unsigned char *r, unsigned char *g, unsigned char *b,int aStream) {
+ long h;
+
+ memcpy(file->vtrack[aStream]->video->blueScreenMappingR,r,256);
+ memcpy(file->vtrack[aStream]->video->blueScreenMappingG,g,256);
+ memcpy(file->vtrack[aStream]->video->blueScreenMappingB,b,256);
+
+ for(h=-512;h<=512;h++) {
+ file->vtrack[aStream]->video->clipArray_Red[h+512] = r[CLIP(h)];
+ file->vtrack[aStream]->video->clipArray_Green[h+512] = g[CLIP(h)];
+ file->vtrack[aStream]->video->clipArray_Blue[h+512] = b[CLIP(h)];
+ file->vtrack[aStream]->video->clipArray16_Red[h+512]=(r[CLIP(h)] & 0xf8) << 7;
+ file->vtrack[aStream]->video->clipArray16_Green[h+512]=(g[CLIP(h)] & 0xf8) << 2;
+ file->vtrack[aStream]->video->clipArray16_Blue[h+512]=(b[CLIP(h)] & 0xf8) >> 3;
+ }
+
+ }
+
+ int mpeg3_get_ClipData (mpeg3_t *file, unsigned char *r, unsigned char *g, unsigned char *b,int aStream) {
+ memcpy(r,file->vtrack[aStream]->video->blueScreenMappingR,256);
+ memcpy(g,file->vtrack[aStream]->video->blueScreenMappingG,256);
+ memcpy(b,file->vtrack[aStream]->video->blueScreenMappingB,256);
+ }
+
|
|
From: Andreas R. <and...@us...> - 2002-09-05 20:21:30
|
Update of /cvsroot/squeak/squeak/platforms/win32/vm
In directory usw-pr-cvs1:/tmp/cvs-serv26865
Modified Files:
sqWin32.h
Log Message:
updated version
Index: sqWin32.h
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/win32/vm/sqWin32.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** sqWin32.h 26 May 2002 18:52:10 -0000 1.5
--- sqWin32.h 5 Sep 2002 20:21:26 -0000 1.6
***************
*** 241,245 ****
#endif
! #define SQUEAK_VM_VERSION TEXT("Squeak 3.2.2 VM (release candidate) from ") TEXT(__DATE__) \
TEXT("\n") TEXT("Compiler: ") TEXT(COMPILER) TEXT(VERSION)
--- 241,245 ----
#endif
! #define SQUEAK_VM_VERSION TEXT("Squeak 3.2.3 / Tea 1.8 VM (release) from ") TEXT(__DATE__) \
TEXT("\n") TEXT("Compiler: ") TEXT(COMPILER) TEXT(VERSION)
|
|
From: Andreas R. <and...@us...> - 2002-09-05 19:33:57
|
Update of /cvsroot/squeak/squeak/platforms/win32/vm
In directory usw-pr-cvs1:/tmp/cvs-serv9951
Modified Files:
sqWin32Intel.c
Log Message:
Set CWD on start to image location
Index: sqWin32Intel.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/win32/vm/sqWin32Intel.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** sqWin32Intel.c 26 May 2002 18:52:10 -0000 1.4
--- sqWin32Intel.c 5 Sep 2002 19:33:54 -0000 1.5
***************
*** 707,710 ****
--- 707,721 ----
__try {
#endif
+ /* set the CWD to the image location */
+ if(*imageName) {
+ char path[MAX_PATH+1], *ptr;
+ strcpy(path,imageName);
+ ptr = strrchr(path, '\\');
+ if(ptr) {
+ *ptr = 0;
+ SetCurrentDirectory(path);
+ }
+ }
+
/* read the image file */
if(!imageFile) {
|
|
From: Andreas R. <and...@us...> - 2002-09-05 19:30:48
|
Update of /cvsroot/squeak/squeak/platforms/win32/plugins/B3DAcceleratorPlugin
In directory usw-pr-cvs1:/tmp/cvs-serv8628
Modified Files:
sqWin32D3D.c sqWin32DualB3DX.c sqWin32OpenGL.c
Log Message:
Added renderer creation flags
Index: sqWin32D3D.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32D3D.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** sqWin32D3D.c 16 Jun 2002 18:25:07 -0000 1.7
--- sqWin32D3D.c 5 Sep 2002 19:30:45 -0000 1.8
***************
*** 106,111 ****
/* device description of renderer */
! BOOL fAllowSoftware;
! BOOL fAllowHardware;
BOOL fDeviceFound;
D3DDEVICEDESC7 ddDesc;
--- 106,110 ----
/* device description of renderer */
! int devFlags; /* device flags from CreateRenderer */
BOOL fDeviceFound;
D3DDEVICEDESC7 ddDesc;
***************
*** 391,397 ****
/* The device must match hw/sw constraints from the renderer */
if(fIsHardware) {
! if(!renderer->fAllowHardware) return D3DENUMRET_OK;
} else {
! if(!renderer->fAllowSoftware) return D3DENUMRET_OK;
}
--- 390,396 ----
/* The device must match hw/sw constraints from the renderer */
if(fIsHardware) {
! if(!(renderer->devFlags & B3D_HARDWARE_RENDERER)) return D3DENUMRET_OK;
} else {
! if(!(renderer->devFlags & B3D_HARDWARE_RENDERER)) return D3DENUMRET_OK;
}
***************
*** 845,852 ****
}
! int d3dCreateRenderer(int allowSoftware, int allowHardware,
! int x, int y, int w, int h) {
int i, index;
d3dRenderer *renderer;
DPRINTF(3, (fp, "---- Initializing D3D ----\n"));
for(i=0; i < MAX_RENDERER; i++) {
--- 844,860 ----
}
! #define SUPPORTED_FLAGS (\
! B3D_HARDWARE_RENDERER \
! | B3D_SOFTWARE_RENDERER)
!
! int d3dCreateRendererFlags(int x, int y, int w, int h, int flags) {
int i, index;
d3dRenderer *renderer;
+
+ if(flags & ~SUPPORTED_FLAGS) {
+ DPRINTF(1, (fp, "ERROR: Unsupported flags requested( %d)\n", flags));
+ return -1;
+ }
+
DPRINTF(3, (fp, "---- Initializing D3D ----\n"));
for(i=0; i < MAX_RENDERER; i++) {
***************
*** 855,859 ****
if(i >= MAX_RENDERER) {
DPRINTF(1, (fp, "ERROR: Maximum number of renderers (%d) exceeded\n", MAX_RENDERER));
! return 0;
}
index = i;
--- 863,867 ----
if(i >= MAX_RENDERER) {
DPRINTF(1, (fp, "ERROR: Maximum number of renderers (%d) exceeded\n", MAX_RENDERER));
! return -1;
}
index = i;
***************
*** 865,870 ****
renderer->bufferRect[2] = w;
renderer->bufferRect[3] = h;
! renderer->fAllowSoftware = allowSoftware;
! renderer->fAllowHardware = allowHardware;
if(!d3dInitializePrimary()) {
/* disable DX if we cannot create the primary objects */
--- 873,877 ----
renderer->bufferRect[2] = w;
renderer->bufferRect[3] = h;
! renderer->devFlags = flags;
if(!d3dInitializePrimary()) {
/* disable DX if we cannot create the primary objects */
Index: sqWin32DualB3DX.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32DualB3DX.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** sqWin32DualB3DX.c 6 May 2002 11:03:05 -0000 1.1
--- sqWin32DualB3DX.c 5 Sep 2002 19:30:45 -0000 1.2
***************
*** 12,15 ****
--- 12,28 ----
glMode = *ptr;
}
+
+ #ifdef TEA
+ #warning "**************************************************************"
+ #warning "**************************************************************"
+ #warning "**************************************************************"
+ #warning
+ #warning "TEA: D3D disabled"
+ #warning
+ #warning "**************************************************************"
+ #warning "**************************************************************"
+ #warning "**************************************************************"
+ glMode = 1;
+ #endif
if(glMode)
return glInitialize();
Index: sqWin32OpenGL.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32OpenGL.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** sqWin32OpenGL.c 29 May 2002 11:43:03 -0000 1.6
--- sqWin32OpenGL.c 5 Sep 2002 19:30:45 -0000 1.7
***************
*** 428,438 ****
#endif
! int glCreateRenderer(int allowSoftware, int allowHardware, int x, int y, int w, int h)
{
! PIXELFORMATDESCRIPTOR pfd, goodPFD;
int depth, i, goodIndex, max, index;
char *string;
glRenderer *renderer;
for(i=0; i < MAX_RENDERER; i++) {
if(allRenderer[i].used == 0) break;
--- 428,448 ----
#endif
! #define SUPPORTED_FLAGS (\
! B3D_HARDWARE_RENDERER \
! | B3D_SOFTWARE_RENDERER \
! | B3D_STENCIL_BUFFER)
!
! int glCreateRendererFlags(int x, int y, int w, int h, int flags)
{
! PIXELFORMATDESCRIPTOR pfd, goodPFD, matchPFD;
int depth, i, goodIndex, max, index;
char *string;
glRenderer *renderer;
+ if(flags & ~SUPPORTED_FLAGS) {
+ DPRINTF(1, (fp, "ERROR: Unsupported flags requested( %d)\n", flags));
+ return -1;
+ }
+
for(i=0; i < MAX_RENDERER; i++) {
if(allRenderer[i].used == 0) break;
***************
*** 440,444 ****
if(i >= MAX_RENDERER) {
DPRINTF(1, (fp, "ERROR: Maximum number of renderers (%d) exceeded\n", MAX_RENDERER));
! return 0;
}
index = i;
--- 450,454 ----
if(i >= MAX_RENDERER) {
DPRINTF(1, (fp, "ERROR: Maximum number of renderers (%d) exceeded\n", MAX_RENDERER));
! return -1;
}
index = i;
***************
*** 471,516 ****
goodIndex = 0;
for(i=1; i<= max; i++) {
DescribePixelFormat(renderer->hDC, i, sizeof(pfd), &pfd);
DPRINTF(3,(fp, "\n#### Checking pixel format %d:\n", i));
printPFD(&pfd, 3);
! if((pfd.dwFlags & PFD_DRAW_TO_WINDOW) == 0)
! continue; /* can't draw to window */
! if((pfd.dwFlags & PFD_SUPPORT_OPENGL) == 0)
! continue; /* can't use OpenGL */
! if((pfd.dwFlags & PFD_DOUBLEBUFFER) == 0)
! continue; /* can't double buffer */
if(pfd.iPixelType != PFD_TYPE_RGBA)
continue; /* not an RGBA format */
! if(pfd.cDepthBits < 16)
continue; /* no enough z-buffer */
if(pfd.iLayerType != PFD_MAIN_PLANE)
continue; /* overlay/underlay */
! #ifdef TEA
! #warning "**************************************************************"
! #warning "**************************************************************"
! #warning "**************************************************************"
! #warning
! #warning "TEA: Stencil buffer required"
! #warning
! #warning "**************************************************************"
! #warning "**************************************************************"
! #warning "**************************************************************"
! if(pfd.cStencilBits < 8)
! continue; /* need stencil bits */
! #endif
if((pfd.dwFlags & PFD_GENERIC_FORMAT) == 0) {
/* This indicates an accellerated driver */
! if(!allowHardware) continue;
DPRINTF(3,(fp,"===> This is an accelerated driver\n"));
- #ifdef ENABLE_FORCED_PFD
- if(forcedPFD > 0) {
- if(--forcedPFD == 0) {
- goodPFD = pfd; goodIndex = i;
- break;
- }
- }
- #endif
if(goodPFD.nSize == 0) {
goodPFD = pfd; goodIndex = i;
--- 481,517 ----
goodIndex = 0;
+ /* setup the matching PFD */
+ matchPFD.dwFlags = 0;
+ /* standard requirements */
+ matchPFD.dwFlags |= PFD_DRAW_TO_WINDOW;
+ matchPFD.dwFlags |= PFD_SUPPORT_OPENGL;
+ matchPFD.dwFlags |= PFD_TYPE_RGBA;
+ matchPFD.dwFlags |= PFD_DOUBLEBUFFER;
+
for(i=1; i<= max; i++) {
DescribePixelFormat(renderer->hDC, i, sizeof(pfd), &pfd);
DPRINTF(3,(fp, "\n#### Checking pixel format %d:\n", i));
printPFD(&pfd, 3);
!
! if((pfd.dwFlags & matchPFD.dwFlags) != matchPFD.dwFlags)
! continue; /* one of the basic requirements didn't work */
!
if(pfd.iPixelType != PFD_TYPE_RGBA)
continue; /* not an RGBA format */
!
! if(pfd.cDepthBits < 12)
continue; /* no enough z-buffer */
+
if(pfd.iLayerType != PFD_MAIN_PLANE)
continue; /* overlay/underlay */
!
! if(flags & B3D_STENCIL_BUFFER)
! if(pfd.cStencilBits == 0)
! continue; /* need stencil bits */
if((pfd.dwFlags & PFD_GENERIC_FORMAT) == 0) {
/* This indicates an accellerated driver */
! if((flags & B3D_HARDWARE_RENDERER) == 0) continue;
DPRINTF(3,(fp,"===> This is an accelerated driver\n"));
if(goodPFD.nSize == 0) {
goodPFD = pfd; goodIndex = i;
***************
*** 520,533 ****
} else if(pfd.dwFlags & PFD_GENERIC_ACCELERATED) {
/* This indicates an accellerated mini-driver */
! if(!allowHardware) continue;
DPRINTF(3,(fp,"===> This is an accelerated mini-driver\n"));
! #ifdef ENABLE_FORCED_PFD
! if(forcedPFD > 0) {
! if(--forcedPFD == 0) {
! goodPFD = pfd; goodIndex = i;
! break;
! }
! }
! #endif
if(goodPFD.nSize == 0) {
goodPFD = pfd; goodIndex = i;
--- 521,527 ----
} else if(pfd.dwFlags & PFD_GENERIC_ACCELERATED) {
/* This indicates an accellerated mini-driver */
! if((flags & B3D_HARDWARE_RENDERER) == 0) continue;
DPRINTF(3,(fp,"===> This is an accelerated mini-driver\n"));
!
if(goodPFD.nSize == 0) {
goodPFD = pfd; goodIndex = i;
***************
*** 540,554 ****
((pfd.dwFlags & PFD_GENERIC_ACCELERATED) == 0)) {
/* this indicates a non-accellerated driver */
! if(!allowSoftware) continue;
! if(goodPFD.nSize == 0) {
goodPFD = pfd; goodIndex = i;
! }
}
}
! if((goodPFD.nSize == 0)
! #ifdef ENABLE_FORCED_PFD
! || (forcedPFD > 0)
! #endif
! ) {
/* We didn't find an accellerated driver. */
DPRINTF(3,(fp,"#### WARNING: No accelerated driver found; bailing out\n"));
--- 534,544 ----
((pfd.dwFlags & PFD_GENERIC_ACCELERATED) == 0)) {
/* this indicates a non-accellerated driver */
! if((flags & B3D_SOFTWARE_RENDERER) == 0) continue;
! if(goodPFD.nSize == 0) {
goodPFD = pfd; goodIndex = i;
! }
}
}
! if((goodPFD.nSize == 0)) {
/* We didn't find an accellerated driver. */
DPRINTF(3,(fp,"#### WARNING: No accelerated driver found; bailing out\n"));
|
|
From: Andreas R. <and...@us...> - 2002-09-05 19:29:15
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/B3DAcceleratorPlugin
In directory usw-pr-cvs1:/tmp/cvs-serv7482
Modified Files:
B3DAcceleratorPlugin.h
Log Message:
Added renderer creation flags
Index: B3DAcceleratorPlugin.h
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Cross/plugins/B3DAcceleratorPlugin/B3DAcceleratorPlugin.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** B3DAcceleratorPlugin.h 29 May 2002 11:42:14 -0000 1.3
--- B3DAcceleratorPlugin.h 5 Sep 2002 19:29:13 -0000 1.4
***************
*** 58,73 ****
} B3DPrimitiveLight;
! #ifdef TEA
! #warning "**************************************************************"
! #warning "**************************************************************"
! #warning "**************************************************************"
! #warning
! #warning "TEA: D3D disabled"
! #warning
! #warning "**************************************************************"
! #warning "**************************************************************"
! #warning "**************************************************************"
! # define WIN32_PURE_GL
! #endif
/* Win32 defaults to DUAL D3D/GL interface everyone else to OpenGL */
--- 58,72 ----
} B3DPrimitiveLight;
! /* Renderer creation flags:
! B3D_SOFTWARE_RENDERER: Enable use of software renderers
! B3D_HARDWARE_RENDERER: Enable use of hardware renderers
! B3D_STENCIL_BUFFER: Request stencil buffer
! More flags may be added - if they are not supported by the platform
! code the creation primitive should fail.
! */
! #define B3D_SOFTWARE_RENDERER 0x0001
! #define B3D_HARDWARE_RENDERER 0x0002
! #define B3D_STENCIL_BUFFER 0x0004
!
/* Win32 defaults to DUAL D3D/GL interface everyone else to OpenGL */
***************
*** 84,87 ****
--- 83,90 ----
#endif
+ /* b3dxCreateRenderer is now obsolete but older plugin sources may still use it */
+ #define b3dxCreateRenderer(sw,hw,x,y,w,h) b3dxCreateRendererFlags(x,y,w,h, (sw ? B3D_SOFTWARE_RENDERER : 0) | (hw ? B3D_HARDWARE_RENDERER : 0))
+
+
#if defined(B3DX_GL)
#define b3dxInitialize glInitialize
***************
*** 97,101 ****
#define b3dxCompositeTexture glCompositeTexture
! #define b3dxCreateRenderer glCreateRenderer
#define b3dxDestroyRenderer glDestroyRenderer
#define b3dxIsOverlayRenderer glIsOverlayRenderer
--- 100,104 ----
#define b3dxCompositeTexture glCompositeTexture
! #define b3dxCreateRendererFlags glCreateRendererFlags
#define b3dxDestroyRenderer glDestroyRenderer
#define b3dxIsOverlayRenderer glIsOverlayRenderer
***************
*** 139,143 ****
#define b3dxCompositeTexture d3dCompositeTexture
! #define b3dxCreateRenderer d3dCreateRenderer
#define b3dxDestroyRenderer d3dDestroyRenderer
#define b3dxGetRendererSurfaceHandle d3dGetRendererSurfaceHandle
--- 142,146 ----
#define b3dxCompositeTexture d3dCompositeTexture
! #define b3dxCreateRendererFlags d3dCreateRendererFlags
#define b3dxDestroyRenderer d3dDestroyRenderer
#define b3dxGetRendererSurfaceHandle d3dGetRendererSurfaceHandle
***************
*** 181,185 ****
/* Renderer primitives */
! int b3dxCreateRenderer(int allowSoftware, int allowHardware, int x, int y, int w, int h); /* return handle or -1 on error */
int b3dxDestroyRenderer(int handle); /* return true on success, else false */
int b3dxIsOverlayRenderer(int handle); /* return true/false */
--- 184,188 ----
/* Renderer primitives */
! int b3dxCreateRendererFlags(int x, int y, int w, int h, int flags); /* return handle or -1 on error */
int b3dxDestroyRenderer(int handle); /* return true on success, else false */
int b3dxIsOverlayRenderer(int handle); /* return true/false */
***************
*** 235,240 ****
#define b3dxCompositeTexture(r,hh,x,y,w,h,t) \
(glMode ? glCompositeTexture(r,hh,x,y,w,h,t) : d3dCompositeTexture(r,hh,x,y,w,h,t))
! #define b3dxCreateRenderer(sw,hw,x,y,w,h) \
! (glMode ? glCreateRenderer(sw,hw,x,y,w,h) : d3dCreateRenderer(sw,hw,x,y,w,h))
#define b3dxDestroyRenderer(h) \
(glMode ? glDestroyRenderer(h) : d3dDestroyRenderer(h))
--- 238,243 ----
#define b3dxCompositeTexture(r,hh,x,y,w,h,t) \
(glMode ? glCompositeTexture(r,hh,x,y,w,h,t) : d3dCompositeTexture(r,hh,x,y,w,h,t))
! #define b3dxCreateRendererFlags(x,y,w,h,f) \
! (glMode ? glCreateRendererFlags(x,y,w,h,f) : d3dCreateRendererFlags(x,y,w,h,f))
#define b3dxDestroyRenderer(h) \
(glMode ? glDestroyRenderer(h) : d3dDestroyRenderer(h))
|
|
From: Andrew C. G. <wiz...@us...> - 2002-08-28 02:16:43
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/RePlugin
In directory usw-pr-cvs1:/tmp/cvs-serv1467/Cross/plugins/RePlugin
Added Files:
Tag: replugin-branch
chartables.c config.h get.c internal.h oldInternal.h pcre.c
pcre.h rePlugin.h study.c
Log Message:
Adding first draft of the rePlugin machine-independent code
--- NEW FILE: chartables.c ---
/*************************************************
* Perl-Compatible Regular Expressions *
*************************************************/
/* This file is automatically written by the dftables auxiliary
program. If you edit it by hand, you might like to edit the Makefile to
prevent its ever being regenerated.
This file is #included in the compilation of pcre.c to build the default
character tables which are used when no tables are passed to the compile
function. */
static unsigned char pcre_default_tables[] = {
/* This table is a lower casing table. */
0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63,
64, 97, 98, 99,100,101,102,103,
104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119,
120,121,122, 91, 92, 93, 94, 95,
96, 97, 98, 99,100,101,102,103,
104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119,
120,121,122,123,124,125,126,127,
128,129,130,131,132,133,134,135,
136,137,138,139,140,141,142,143,
144,145,146,147,148,149,150,151,
152,153,154,155,156,157,158,159,
160,161,162,163,164,165,166,167,
168,169,170,171,172,173,174,175,
176,177,178,179,180,181,182,183,
184,185,186,187,188,189,190,191,
192,193,194,195,196,197,198,199,
200,201,202,203,204,205,206,207,
208,209,210,211,212,213,214,215,
216,217,218,219,220,221,222,223,
224,225,226,227,228,229,230,231,
232,233,234,235,236,237,238,239,
240,241,242,243,244,245,246,247,
248,249,250,251,252,253,254,255,
/* This table is a case flipping table. */
0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63,
64, 97, 98, 99,100,101,102,103,
104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119,
120,121,122, 91, 92, 93, 94, 95,
96, 65, 66, 67, 68, 69, 70, 71,
72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87,
88, 89, 90,123,124,125,126,127,
128,129,130,131,132,133,134,135,
136,137,138,139,140,141,142,143,
144,145,146,147,148,149,150,151,
152,153,154,155,156,157,158,159,
160,161,162,163,164,165,166,167,
168,169,170,171,172,173,174,175,
176,177,178,179,180,181,182,183,
184,185,186,187,188,189,190,191,
192,193,194,195,196,197,198,199,
200,201,202,203,204,205,206,207,
208,209,210,211,212,213,214,215,
216,217,218,219,220,221,222,223,
224,225,226,227,228,229,230,231,
232,233,234,235,236,237,238,239,
240,241,242,243,244,245,246,247,
248,249,250,251,252,253,254,255,
/* This table contains bit maps for various character classes.
Each map is 32 bytes long and the bits run from the least
significant end of each byte. The classes that have their own
maps are: space, xdigit, digit, upper, lower, word, graph
print, punct, and cntrl. Other classes are built from combinations. */
0x00,0x3e,0x00,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,
0x7e,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xfe,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x07,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,
0xfe,0xff,0xff,0x87,0xfe,0xff,0xff,0x07,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xfe,0xff,0x00,0xfc,
0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x78,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* This table identifies various classes of character by individual bits:
0x01 white space character
0x02 letter
0x04 decimal digit
0x08 hexadecimal digit
0x10 alphanumeric or '_'
0x80 regular expression metacharacter or binary zero
*/
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 0- 7 */
0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00, /* 8- 15 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 16- 23 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 24- 31 */
0x01,0x00,0x00,0x00,0x80,0x00,0x00,0x00, /* - ' */
0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x00, /* ( - / */
0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c, /* 0 - 7 */
0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,0x80, /* 8 - ? */
0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x12, /* @ - G */
0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /* H - O */
0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /* P - W */
0x12,0x12,0x12,0x80,0x00,0x00,0x80,0x10, /* X - _ */
0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x12, /* ` - g */
0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /* h - o */
0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /* p - w */
0x12,0x12,0x12,0x80,0x80,0x00,0x00,0x00, /* x -127 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 128-135 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 136-143 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 144-151 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 152-159 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 160-167 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 168-175 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 176-183 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 184-191 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 192-199 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 200-207 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 208-215 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 216-223 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 224-231 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 232-239 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 240-247 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/* 248-255 */
/* End of chartables.c */
--- NEW FILE: config.h ---
/* config.h. Generated automatically by configure. */
/* On Unix systems config.in is converted by configure into config.h. PCRE is
written in Standard C, but there are a few non-standard things it can cope
with, allowing it to run on SunOS4 and other "close to standard" systems.
On a non-Unix system you should just copy this file into config.h, and set up
the macros the way you need them. You should normally change the definitions of
HAVE_STRERROR and HAVE_MEMMOVE to 1. Unfortunately, because of the way autoconf
works, these cannot be made the defaults. If your system has bcopy() and not
memmove(), change the definition of HAVE_BCOPY instead of HAVE_MEMMOVE. If your
system has neither bcopy() nor memmove(), leave them both as 0; an emulation
function will be used. */
/* Define to empty if the keyword does not work. */
/* #undef const */
/* Define to `unsigned' if <stddef.h> doesn't define size_t. */
/* #undef size_t */
/* The following two definitions are mainly for the benefit of SunOS4, which
doesn't have the strerror() or memmove() functions that should be present in
all Standard C libraries. The macros HAVE_STRERROR and HAVE_MEMMOVE should
normally be defined with the value 1 for other systems, but unfortunately we
can't make this the default because "configure" files generated by autoconf
will only change 0 to 1; they won't change 1 to 0 if the functions are not
found. */
#define HAVE_STRERROR 1
#define HAVE_MEMMOVE 1
/* There are some non-Unix systems that don't even have bcopy(). If this macro
is false, an emulation is used. If HAVE_MEMMOVE is set to 1, the value of
HAVE_BCOPY is not relevant. */
#define HAVE_BCOPY 1
/* The value of NEWLINE determines the newline character. The default is to
leave it up to the compiler, but some sites want to force a particular value.
On Unix systems, "configure" can be used to override this default. */
#ifndef NEWLINE
#define NEWLINE '\n'
#endif
/* End */
--- NEW FILE: get.c ---
/*************************************************
* Perl-Compatible Regular Expressions *
*************************************************/
/*
This is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language. See
the file Tech.Notes for some information on the internals.
Written by: Philip Hazel <ph...@ca...>
Copyright (c) 1997-2001 University of Cambridge
-----------------------------------------------------------------------------
Permission is granted to anyone to use this software for any purpose on any
computer system, and to redistribute it freely, subject to the following
restrictions:
1. This software is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2. The origin of this software must not be misrepresented, either by
explicit claim or by omission.
3. Altered versions must be plainly marked as such, and must not be
misrepresented as being the original software.
4. If PCRE is embedded in any software that is released under the GNU
General Purpose Licence (GPL), then the terms of that licence shall
supersede any condition above with which it is incompatible.
-----------------------------------------------------------------------------
*/
/* This module contains some convenience functions for extracting substrings
from the subject string after a regex match has succeeded. The original idea
for these functions came from Scott Wimer <sc...@cg...>. */
/* Include the internals header, which itself includes Standard C headers plus
the external pcre header. */
#include "internal.h"
/*************************************************
* Copy captured string to given buffer *
*************************************************/
/* This function copies a single captured substring into a given buffer.
Note that we use memcpy() rather than strncpy() in case there are binary zeros
in the string.
Arguments:
subject the subject string that was matched
ovector pointer to the offsets table
stringcount the number of substrings that were captured
(i.e. the yield of the pcre_exec call, unless
that was zero, in which case it should be 1/3
of the offset table size)
stringnumber the number of the required substring
buffer where to put the substring
size the size of the buffer
Returns: if successful:
the length of the copied string, not including the zero
that is put on the end; can be zero
if not successful:
PCRE_ERROR_NOMEMORY (-6) buffer too small
PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
*/
int
pcre_copy_substring(const char *subject, int *ovector, int stringcount,
int stringnumber, char *buffer, int size)
{
int yield;
if (stringnumber < 0 || stringnumber >= stringcount)
return PCRE_ERROR_NOSUBSTRING;
stringnumber *= 2;
yield = ovector[stringnumber+1] - ovector[stringnumber];
if (size < yield + 1) return PCRE_ERROR_NOMEMORY;
memcpy(buffer, subject + ovector[stringnumber], yield);
buffer[yield] = 0;
return yield;
}
/*************************************************
* Copy all captured strings to new store *
*************************************************/
/* This function gets one chunk of store and builds a list of pointers and all
of the captured substrings in it. A NULL pointer is put on the end of the list.
Arguments:
subject the subject string that was matched
ovector pointer to the offsets table
stringcount the number of substrings that were captured
(i.e. the yield of the pcre_exec call, unless
that was zero, in which case it should be 1/3
of the offset table size)
listptr set to point to the list of pointers
Returns: if successful: 0
if not successful:
PCRE_ERROR_NOMEMORY (-6) failed to get store
*/
int
pcre_get_substring_list(const char *subject, int *ovector, int stringcount,
const char ***listptr)
{
int i;
int size = sizeof(char *);
int double_count = stringcount * 2;
char **stringlist;
char *p;
for (i = 0; i < double_count; i += 2)
size += sizeof(char *) + ovector[i+1] - ovector[i] + 1;
stringlist = (char **)(pcre_malloc)(size);
if (stringlist == NULL) return PCRE_ERROR_NOMEMORY;
*listptr = (const char **)stringlist;
p = (char *)(stringlist + stringcount + 1);
for (i = 0; i < double_count; i += 2)
{
int len = ovector[i+1] - ovector[i];
memcpy(p, subject + ovector[i], len);
*stringlist++ = p;
p += len;
*p++ = 0;
}
*stringlist = NULL;
return 0;
}
/*************************************************
* Free store obtained by get_substring_list *
*************************************************/
/* This function exists for the benefit of people calling PCRE from non-C
programs that can call its functions, but not free() or (pcre_free)() directly.
Argument: the result of a previous pcre_get_substring_list()
Returns: nothing
*/
void
pcre_free_substring_list(const char **pointer)
{
(pcre_free)((void *)pointer);
}
/*************************************************
* Copy captured string to new store *
*************************************************/
/* This function copies a single captured substring into a piece of new
store
Arguments:
subject the subject string that was matched
ovector pointer to the offsets table
stringcount the number of substrings that were captured
(i.e. the yield of the pcre_exec call, unless
that was zero, in which case it should be 1/3
of the offset table size)
stringnumber the number of the required substring
stringptr where to put a pointer to the substring
Returns: if successful:
the length of the string, not including the zero that
is put on the end; can be zero
if not successful:
PCRE_ERROR_NOMEMORY (-6) failed to get store
PCRE_ERROR_NOSUBSTRING (-7) substring not present
*/
int
pcre_get_substring(const char *subject, int *ovector, int stringcount,
int stringnumber, const char **stringptr)
{
int yield;
char *substring;
if (stringnumber < 0 || stringnumber >= stringcount)
return PCRE_ERROR_NOSUBSTRING;
stringnumber *= 2;
yield = ovector[stringnumber+1] - ovector[stringnumber];
substring = (char *)(pcre_malloc)(yield + 1);
if (substring == NULL) return PCRE_ERROR_NOMEMORY;
memcpy(substring, subject + ovector[stringnumber], yield);
substring[yield] = 0;
*stringptr = substring;
return yield;
}
/*************************************************
* Free store obtained by get_substring *
*************************************************/
/* This function exists for the benefit of people calling PCRE from non-C
programs that can call its functions, but not free() or (pcre_free)() directly.
Argument: the result of a previous pcre_get_substring()
Returns: nothing
*/
void
pcre_free_substring(const char *pointer)
{
(pcre_free)((void *)pointer);
}
/* End of get.c */
--- NEW FILE: internal.h ---
/*************************************************
* Perl-Compatible Regular Expressions *
*************************************************/
/* This is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language. See
the file Tech.Notes for some information on the internals.
Written by: Philip Hazel <ph...@ca...>
Copyright (c) 1997-2001 University of Cambridge
-----------------------------------------------------------------------------
Permission is granted to anyone to use this software for any purpose on any
computer system, and to redistribute it freely, subject to the following
restrictions:
1. This software is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2. The origin of this software must not be misrepresented, either by
explicit claim or by omission.
3. Altered versions must be plainly marked as such, and must not be
misrepresented as being the original software.
4. If PCRE is embedded in any software that is released under the GNU
General Purpose Licence (GPL), then the terms of that licence shall
supersede any condition above with which it is incompatible.
-----------------------------------------------------------------------------
*/
/* This header contains definitions that are shared between the different
modules, but which are not relevant to the outside. */
/* Get the definitions provided by running "configure" */
#define NEWLINE '\r'
#define SQUEAK_PLUGIN
#include "config.h"
/* To cope with SunOS4 and other systems that lack memmove() but have bcopy(),
define a macro for memmove() if HAVE_MEMMOVE is false, provided that HAVE_BCOPY
is set. Otherwise, include an emulating function for those systems that have
neither (there some non-Unix environments where this is the case). This assumes
that all calls to memmove are moving strings upwards in store, which is the
case in PCRE. */
#if ! HAVE_MEMMOVE
#undef memmove /* some systems may have a macro */
#if HAVE_BCOPY
#define memmove(a, b, c) bcopy(b, a, c)
#else
void *
pcre_memmove(unsigned char *dest, const unsigned char *src, size_t n)
{
int i;
dest += n;
src += n;
for (i = 0; i < n; ++i) *(--dest) = *(--src);
}
#define memmove(a, b, c) pcre_memmove(a, b, c)
#endif
#endif
/* Standard C headers plus the external interface definition */
#include <ctype.h>
#include <limits.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "pcre.h"
/* In case there is no definition of offsetof() provided - though any proper
Standard C system should have one. */
#ifndef offsetof
#define offsetof(p_type,field) ((size_t)&(((p_type *)0)->field))
#endif
/* These are the public options that can change during matching. */
#define PCRE_IMS (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL)
/* Private options flags start at the most significant end of the four bytes,
but skip the top bit so we can use ints for convenience without getting tangled
with negative values. The public options defined in pcre.h start at the least
significant end. Make sure they don't overlap, though now that we have expanded
to four bytes there is plenty of space. */
#define PCRE_FIRSTSET 0x40000000 /* first_char is set */
#define PCRE_REQCHSET 0x20000000 /* req_char is set */
#define PCRE_STARTLINE 0x10000000 /* start after \n for multiline */
#define PCRE_INGROUP 0x08000000 /* compiling inside a group */
#define PCRE_ICHANGED 0x04000000 /* i option changes within regex */
/* Options for the "extra" block produced by pcre_study(). */
#define PCRE_STUDY_MAPPED 0x01 /* a map of starting chars exists */
/* Masks for identifying the public options which are permitted at compile
time, run time or study time, respectively. */
#define PUBLIC_OPTIONS \
(PCRE_CASELESS|PCRE_EXTENDED|PCRE_ANCHORED|PCRE_MULTILINE| \
PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8)
#define PUBLIC_EXEC_OPTIONS \
(PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY)
#define PUBLIC_STUDY_OPTIONS 0 /* None defined */
/* Magic number to provide a small check against being handed junk. */
#define MAGIC_NUMBER 0x50435245UL /* 'PCRE' */
/* Miscellaneous definitions */
typedef int BOOL;
/* tpr - needed to avoid clash with prevous defn in system headers */
#ifndef FALSE
#define FALSE 0
#define TRUE 1
#endif
/* Escape items that are just an encoding of a particular data value. Note that
ESC_N is defined as yet another macro, which is set in config.h to either \n
(the default) or \r (which some people want). */
#ifndef ESC_E
#define ESC_E 27
#endif
#ifndef ESC_F
#define ESC_F '\f'
#endif
#ifndef ESC_N
#define ESC_N NEWLINE
#endif
#ifndef ESC_R
#define ESC_R '\r'
#endif
#ifndef ESC_T
#define ESC_T '\t'
#endif
/* These are escaped items that aren't just an encoding of a particular data
value such as \n. They must have non-zero values, as check_escape() returns
their negation. Also, they must appear in the same order as in the opcode
definitions below, up to ESC_z. The final one must be ESC_REF as subsequent
values are used for \1, \2, \3, etc. There is a test in the code for an escape
greater than ESC_b and less than ESC_Z to detect the types that may be
repeated. If any new escapes are put in-between that don't consume a character,
that code will have to change. */
enum { ESC_A = 1, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s, ESC_W, ESC_w,
ESC_Z, ESC_z, ESC_REF };
/* Opcode table: OP_BRA must be last, as all values >= it are used for brackets
that extract substrings. Starting from 1 (i.e. after OP_END), the values up to
OP_EOD must correspond in order to the list of escapes immediately above. */
enum {
OP_END, /* End of pattern */
/* Values corresponding to backslashed metacharacters */
OP_SOD, /* Start of data: \A */
OP_NOT_WORD_BOUNDARY, /* \B */
OP_WORD_BOUNDARY, /* \b */
OP_NOT_DIGIT, /* \D */
OP_DIGIT, /* \d */
OP_NOT_WHITESPACE, /* \S */
OP_WHITESPACE, /* \s */
OP_NOT_WORDCHAR, /* \W */
OP_WORDCHAR, /* \w */
OP_EODN, /* End of data or \n at end of data: \Z. */
OP_EOD, /* End of data: \z */
OP_OPT, /* Set runtime options */
OP_CIRC, /* Start of line - varies with multiline switch */
OP_DOLL, /* End of line - varies with multiline switch */
OP_ANY, /* Match any character */
OP_CHARS, /* Match string of characters */
OP_NOT, /* Match anything but the following char */
OP_STAR, /* The maximizing and minimizing versions of */
OP_MINSTAR, /* all these opcodes must come in pairs, with */
OP_PLUS, /* the minimizing one second. */
OP_MINPLUS, /* This first set applies to single characters */
OP_QUERY,
OP_MINQUERY,
OP_UPTO, /* From 0 to n matches */
OP_MINUPTO,
OP_EXACT, /* Exactly n matches */
OP_NOTSTAR, /* The maximizing and minimizing versions of */
OP_NOTMINSTAR, /* all these opcodes must come in pairs, with */
OP_NOTPLUS, /* the minimizing one second. */
OP_NOTMINPLUS, /* This first set applies to "not" single characters */
OP_NOTQUERY,
OP_NOTMINQUERY,
OP_NOTUPTO, /* From 0 to n matches */
OP_NOTMINUPTO,
OP_NOTEXACT, /* Exactly n matches */
OP_TYPESTAR, /* The maximizing and minimizing versions of */
OP_TYPEMINSTAR, /* all these opcodes must come in pairs, with */
OP_TYPEPLUS, /* the minimizing one second. These codes must */
OP_TYPEMINPLUS, /* be in exactly the same order as those above. */
OP_TYPEQUERY, /* This set applies to character types such as \d */
OP_TYPEMINQUERY,
OP_TYPEUPTO, /* From 0 to n matches */
OP_TYPEMINUPTO,
OP_TYPEEXACT, /* Exactly n matches */
OP_CRSTAR, /* The maximizing and minimizing versions of */
OP_CRMINSTAR, /* all these opcodes must come in pairs, with */
OP_CRPLUS, /* the minimizing one second. These codes must */
OP_CRMINPLUS, /* be in exactly the same order as those above. */
OP_CRQUERY, /* These are for character classes and back refs */
OP_CRMINQUERY,
OP_CRRANGE, /* These are different to the three seta above. */
OP_CRMINRANGE,
OP_CLASS, /* Match a character class */
OP_REF, /* Match a back reference */
OP_RECURSE, /* Match this pattern recursively */
OP_ALT, /* Start of alternation */
OP_KET, /* End of group that doesn't have an unbounded repeat */
OP_KETRMAX, /* These two must remain together and in this */
OP_KETRMIN, /* order. They are for groups the repeat for ever. */
/* The assertions must come before ONCE and COND */
OP_ASSERT, /* Positive lookahead */
OP_ASSERT_NOT, /* Negative lookahead */
OP_ASSERTBACK, /* Positive lookbehind */
OP_ASSERTBACK_NOT, /* Negative lookbehind */
OP_REVERSE, /* Move pointer back - used in lookbehind assertions */
/* ONCE and COND must come after the assertions, with ONCE first, as there's
a test for >= ONCE for a subpattern that isn't an assertion. */
OP_ONCE, /* Once matched, don't back up into the subpattern */
OP_COND, /* Conditional group */
OP_CREF, /* Used to hold an extraction string number (cond ref) */
OP_BRAZERO, /* These two must remain together and in this */
OP_BRAMINZERO, /* order. */
OP_BRANUMBER, /* Used for extracting brackets whose number is greater
than can fit into an opcode. */
OP_BRA /* This and greater values are used for brackets that
extract substrings up to a basic limit. After that,
use is made of OP_BRANUMBER. */
};
/* The highest extraction number before we have to start using additional
bytes. (Originally PCRE didn't have support for extraction counts highter than
this number.) The value is limited by the number of opcodes left after OP_BRA,
i.e. 255 - OP_BRA. We actually set it a bit lower to leave room for additional
opcodes. */
#define EXTRACT_BASIC_MAX 150
/* The texts of compile-time error messages are defined as macros here so that
they can be accessed by the POSIX wrapper and converted into error codes. Yes,
I could have used error codes in the first place, but didn't feel like changing
just to accommodate the POSIX wrapper. */
#define ERR1 "\\ at end of pattern"
#define ERR2 "\\c at end of pattern"
#define ERR3 "unrecognized character follows \\"
#define ERR4 "numbers out of order in {} quantifier"
#define ERR5 "number too big in {} quantifier"
#define ERR6 "missing terminating ] for character class"
#define ERR7 "invalid escape sequence in character class"
#define ERR8 "range out of order in character class"
#define ERR9 "nothing to repeat"
#define ERR10 "operand of unlimited repeat could match the empty string"
#define ERR11 "internal error: unexpected repeat"
#define ERR12 "unrecognized character after (?"
#define ERR13 "unused error"
#define ERR14 "missing )"
#define ERR15 "back reference to non-existent subpattern"
#define ERR16 "erroffset passed as NULL"
#define ERR17 "unknown option bit(s) set"
#define ERR18 "missing ) after comment"
#define ERR19 "parentheses nested too deeply"
#define ERR20 "regular expression too large"
#define ERR21 "failed to get memory"
#define ERR22 "unmatched parentheses"
#define ERR23 "internal error: code overflow"
#define ERR24 "unrecognized character after (?<"
#define ERR25 "lookbehind assertion is not fixed length"
#define ERR26 "malformed number after (?("
#define ERR27 "conditional group contains more than two branches"
#define ERR28 "assertion expected after (?("
#define ERR29 "(?p must be followed by )"
#define ERR30 "unknown POSIX class name"
#define ERR31 "POSIX collating elements are not supported"
#define ERR32 "this version of PCRE is not compiled with PCRE_UTF8 support"
#define ERR33 "characters with values > 255 are not yet supported in classes"
#define ERR34 "character value in \\x{...} sequence is too large"
#define ERR35 "invalid condition (?(0)"
/* All character handling must be done as unsigned characters. Otherwise there
are problems with top-bit-set characters and functions such as isspace().
However, we leave the interface to the outside world as char *, because that
should make things easier for callers. We define a short type for unsigned char
to save lots of typing. I tried "uchar", but it causes problems on Digital
Unix, where it is defined in sys/types, so use "uschar" instead. */
typedef unsigned char uschar;
/* The real format of the start of the pcre block; the actual code vector
runs on as long as necessary after the end. */
typedef struct real_pcre {
unsigned long int magic_number;
size_t size;
const unsigned char *tables;
unsigned long int options;
unsigned short int top_bracket;
unsigned short int top_backref;
uschar first_char;
uschar req_char;
uschar code[1];
} real_pcre;
/* The real format of the extra block returned by pcre_study(). */
typedef struct real_pcre_extra {
uschar options;
uschar start_bits[32];
} real_pcre_extra;
/* Structure for passing "static" information around between the functions
doing the compiling, so that they are thread-safe. */
typedef struct compile_data {
const uschar *lcc; /* Points to lower casing table */
const uschar *fcc; /* Points to case-flipping table */
const uschar *cbits; /* Points to character type table */
const uschar *ctypes; /* Points to table of type maps */
} compile_data;
/* Structure for passing "static" information around between the functions
doing the matching, so that they are thread-safe. */
typedef struct match_data {
int errorcode; /* As it says */
int *offset_vector; /* Offset vector */
int offset_end; /* One past the end */
int offset_max; /* The maximum usable for return data */
const uschar *lcc; /* Points to lower casing table */
const uschar *ctypes; /* Points to table of type maps */
BOOL offset_overflow; /* Set if too many extractions */
BOOL notbol; /* NOTBOL flag */
BOOL noteol; /* NOTEOL flag */
BOOL utf8; /* UTF8 flag */
BOOL endonly; /* Dollar not before final \n */
BOOL notempty; /* Empty string match not wanted */
const uschar *start_pattern; /* For use when recursing */
const uschar *start_subject; /* Start of the subject string */
const uschar *end_subject; /* End of the subject string */
const uschar *start_match; /* Start of this match attempt */
const uschar *end_match_ptr; /* Subject position at end match */
int end_offset_top; /* Highwater mark at end of match */
} match_data;
/* Bit definitions for entries in the pcre_ctypes table. */
#define ctype_space 0x01
#define ctype_letter 0x02
#define ctype_digit 0x04
#define ctype_xdigit 0x08
#define ctype_word 0x10 /* alphameric or '_' */
#define ctype_meta 0x80 /* regexp meta char or zero (end pattern) */
/* Offsets for the bitmap tables in pcre_cbits. Each table contains a set
of bits for a class map. Some classes are built by combining these tables. */
#define cbit_space 0 /* [:space:] or \s */
#define cbit_xdigit 32 /* [:xdigit:] */
#define cbit_digit 64 /* [:digit:] or \d */
#define cbit_upper 96 /* [:upper:] */
#define cbit_lower 128 /* [:lower:] */
#define cbit_word 160 /* [:word:] or \w */
#define cbit_graph 192 /* [:graph:] */
#define cbit_print 224 /* [:print:] */
#define cbit_punct 256 /* [:punct:] */
#define cbit_cntrl 288 /* [:cntrl:] */
#define cbit_length 320 /* Length of the cbits table */
/* Offsets of the various tables from the base tables pointer, and
total length. */
#define lcc_offset 0
#define fcc_offset 256
#define cbits_offset 512
#define ctypes_offset (cbits_offset + cbit_length)
#define tables_length (ctypes_offset + 256)
/* End of internal.h */
--- NEW FILE: oldInternal.h ---
/*************************************************
* Perl-Compatible Regular Expressions *
*************************************************/
/* This is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language. See
the file Tech.Notes for some information on the internals.
Written by: Philip Hazel <ph...@ca...>
Copyright (c) 1997-2001 University of Cambridge
-----------------------------------------------------------------------------
Permission is granted to anyone to use this software for any purpose on any
computer system, and to redistribute it freely, subject to the following
restrictions:
1. This software is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2. The origin of this software must not be misrepresented, either by
explicit claim or by omission.
3. Altered versions must be plainly marked as such, and must not be
misrepresented as being the original software.
4. If PCRE is embedded in any software that is released under the GNU
General Purpose Licence (GPL), then the terms of that licence shall
supersede any condition above with which it is incompatible.
-----------------------------------------------------------------------------
*/
/* This header contains definitions that are shared between the different
modules, but which are not relevant to the outside. */
/* Get the definitions provided by running "configure" */
#define NEWLINE '\r'
#define SQUEAK_PLUGIN
#include "config.h"
/* To cope with SunOS4 and other systems that lack memmove() but have bcopy(),
define a macro for memmove() if HAVE_MEMMOVE is false, provided that HAVE_BCOPY
is set. Otherwise, include an emulating function for those systems that have
neither (there some non-Unix environments where this is the case). This assumes
that all calls to memmove are moving strings upwards in store, which is the
case in PCRE. */
#if ! HAVE_MEMMOVE
#undef memmove /* some systems may have a macro */
#if HAVE_BCOPY
#define memmove(a, b, c) bcopy(b, a, c)
#else
void *
pcre_memmove(unsigned char *dest, const unsigned char *src, size_t n)
{
int i;
dest += n;
src += n;
for (i = 0; i < n; ++i) *(--dest) = *(--src);
}
#define memmove(a, b, c) pcre_memmove(a, b, c)
#endif
#endif
/* Standard C headers plus the external interface definition */
#include <ctype.h>
#include <limits.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "pcre.h"
/* In case there is no definition of offsetof() provided - though any proper
Standard C system should have one. */
#ifndef offsetof
#define offsetof(p_type,field) ((size_t)&(((p_type *)0)->field))
#endif
/* These are the public options that can change during matching. */
#define PCRE_IMS (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL)
/* Private options flags start at the most significant end of the four bytes,
but skip the top bit so we can use ints for convenience without getting tangled
with negative values. The public options defined in pcre.h start at the least
significant end. Make sure they don't overlap, though now that we have expanded
to four bytes there is plenty of space. */
#define PCRE_FIRSTSET 0x40000000 /* first_char is set */
#define PCRE_REQCHSET 0x20000000 /* req_char is set */
#define PCRE_STARTLINE 0x10000000 /* start after \n for multiline */
#define PCRE_INGROUP 0x08000000 /* compiling inside a group */
#define PCRE_ICHANGED 0x04000000 /* i option changes within regex */
/* Options for the "extra" block produced by pcre_study(). */
#define PCRE_STUDY_MAPPED 0x01 /* a map of starting chars exists */
/* Masks for identifying the public options which are permitted at compile
time, run time or study time, respectively. */
#define PUBLIC_OPTIONS \
(PCRE_CASELESS|PCRE_EXTENDED|PCRE_ANCHORED|PCRE_MULTILINE| \
PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8)
#define PUBLIC_EXEC_OPTIONS \
(PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY)
#define PUBLIC_STUDY_OPTIONS 0 /* None defined */
/* Magic number to provide a small check against being handed junk. */
#define MAGIC_NUMBER 0x50435245UL /* 'PCRE' */
/* Miscellaneous definitions */
typedef int BOOL;
#define FALSE 0
#define TRUE 1
/* Escape items that are just an encoding of a particular data value. Note that
ESC_N is defined as yet another macro, which is set in config.h to either \n
(the default) or \r (which some people want). */
#ifndef ESC_E
#define ESC_E 27
#endif
#ifndef ESC_F
#define ESC_F '\f'
#endif
#ifndef ESC_N
#define ESC_N NEWLINE
#endif
#ifndef ESC_R
#define ESC_R '\r'
#endif
#ifndef ESC_T
#define ESC_T '\t'
#endif
/* These are escaped items that aren't just an encoding of a particular data
value such as \n. They must have non-zero values, as check_escape() returns
their negation. Also, they must appear in the same order as in the opcode
definitions below, up to ESC_z. The final one must be ESC_REF as subsequent
values are used for \1, \2, \3, etc. There is a test in the code for an escape
greater than ESC_b and less than ESC_Z to detect the types that may be
repeated. If any new escapes are put in-between that don't consume a character,
that code will have to change. */
enum { ESC_A = 1, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s, ESC_W, ESC_w,
ESC_Z, ESC_z, ESC_REF };
/* Opcode table: OP_BRA must be last, as all values >= it are used for brackets
that extract substrings. Starting from 1 (i.e. after OP_END), the values up to
OP_EOD must correspond in order to the list of escapes immediately above. */
enum {
OP_END, /* End of pattern */
/* Values corresponding to backslashed metacharacters */
OP_SOD, /* Start of data: \A */
OP_NOT_WORD_BOUNDARY, /* \B */
OP_WORD_BOUNDARY, /* \b */
OP_NOT_DIGIT, /* \D */
OP_DIGIT, /* \d */
OP_NOT_WHITESPACE, /* \S */
OP_WHITESPACE, /* \s */
OP_NOT_WORDCHAR, /* \W */
OP_WORDCHAR, /* \w */
OP_EODN, /* End of data or \n at end of data: \Z. */
OP_EOD, /* End of data: \z */
OP_OPT, /* Set runtime options */
OP_CIRC, /* Start of line - varies with multiline switch */
OP_DOLL, /* End of line - varies with multiline switch */
OP_ANY, /* Match any character */
OP_CHARS, /* Match string of characters */
OP_NOT, /* Match anything but the following char */
OP_STAR, /* The maximizing and minimizing versions of */
OP_MINSTAR, /* all these opcodes must come in pairs, with */
OP_PLUS, /* the minimizing one second. */
OP_MINPLUS, /* This first set applies to single characters */
OP_QUERY,
OP_MINQUERY,
OP_UPTO, /* From 0 to n matches */
OP_MINUPTO,
OP_EXACT, /* Exactly n matches */
OP_NOTSTAR, /* The maximizing and minimizing versions of */
OP_NOTMINSTAR, /* all these opcodes must come in pairs, with */
OP_NOTPLUS, /* the minimizing one second. */
OP_NOTMINPLUS, /* This first set applies to "not" single characters */
OP_NOTQUERY,
OP_NOTMINQUERY,
OP_NOTUPTO, /* From 0 to n matches */
OP_NOTMINUPTO,
OP_NOTEXACT, /* Exactly n matches */
OP_TYPESTAR, /* The maximizing and minimizing versions of */
OP_TYPEMINSTAR, /* all these opcodes must come in pairs, with */
OP_TYPEPLUS, /* the minimizing one second. These codes must */
OP_TYPEMINPLUS, /* be in exactly the same order as those above. */
OP_TYPEQUERY, /* This set applies to character types such as \d */
OP_TYPEMINQUERY,
OP_TYPEUPTO, /* From 0 to n matches */
OP_TYPEMINUPTO,
OP_TYPEEXACT, /* Exactly n matches */
OP_CRSTAR, /* The maximizing and minimizing versions of */
OP_CRMINSTAR, /* all these opcodes must come in pairs, with */
OP_CRPLUS, /* the minimizing one second. These codes must */
OP_CRMINPLUS, /* be in exactly the same order as those above. */
OP_CRQUERY, /* These are for character classes and back refs */
OP_CRMINQUERY,
OP_CRRANGE, /* These are different to the three seta above. */
OP_CRMINRANGE,
OP_CLASS, /* Match a character class */
OP_REF, /* Match a back reference */
OP_RECURSE, /* Match this pattern recursively */
OP_ALT, /* Start of alternation */
OP_KET, /* End of group that doesn't have an unbounded repeat */
OP_KETRMAX, /* These two must remain together and in this */
OP_KETRMIN, /* order. They are for groups the repeat for ever. */
/* The assertions must come before ONCE and COND */
OP_ASSERT, /* Positive lookahead */
OP_ASSERT_NOT, /* Negative lookahead */
OP_ASSERTBACK, /* Positive lookbehind */
OP_ASSERTBACK_NOT, /* Negative lookbehind */
OP_REVERSE, /* Move pointer back - used in lookbehind assertions */
/* ONCE and COND must come after the assertions, with ONCE first, as there's
a test for >= ONCE for a subpattern that isn't an assertion. */
OP_ONCE, /* Once matched, don't back up into the subpattern */
OP_COND, /* Conditional group */
OP_CREF, /* Used to hold an extraction string number (cond ref) */
OP_BRAZERO, /* These two must remain together and in this */
OP_BRAMINZERO, /* order. */
OP_BRANUMBER, /* Used for extracting brackets whose number is greater
than can fit into an opcode. */
OP_BRA /* This and greater values are used for brackets that
extract substrings up to a basic limit. After that,
use is made of OP_BRANUMBER. */
};
/* The highest extraction number before we have to start using additional
bytes. (Originally PCRE didn't have support for extraction counts highter than
this number.) The value is limited by the number of opcodes left after OP_BRA,
i.e. 255 - OP_BRA. We actually set it a bit lower to leave room for additional
opcodes. */
#define EXTRACT_BASIC_MAX 150
/* The texts of compile-time error messages are defined as macros here so that
they can be accessed by the POSIX wrapper and converted into error codes. Yes,
I could have used error codes in the first place, but didn't feel like changing
just to accommodate the POSIX wrapper. */
#define ERR1 "\\ at end of pattern"
#define ERR2 "\\c at end of pattern"
#define ERR3 "unrecognized character follows \\"
#define ERR4 "numbers out of order in {} quantifier"
#define ERR5 "number too big in {} quantifier"
#define ERR6 "missing terminating ] for character class"
#define ERR7 "invalid escape sequence in character class"
#define ERR8 "range out of order in character class"
#define ERR9 "nothing to repeat"
#define ERR10 "operand of unlimited repeat could match the empty string"
#define ERR11 "internal error: unexpected repeat"
#define ERR12 "unrecognized character after (?"
#define ERR13 "unused error"
#define ERR14 "missing )"
#define ERR15 "back reference to non-existent subpattern"
#define ERR16 "erroffset passed as NULL"
#define ERR17 "unknown option bit(s) set"
#define ERR18 "missing ) after comment"
#define ERR19 "parentheses nested too deeply"
#define ERR20 "regular expression too large"
#define ERR21 "failed to get memory"
#define ERR22 "unmatched parentheses"
#define ERR23 "internal error: code overflow"
#define ERR24 "unrecognized character after (?<"
#define ERR25 "lookbehind assertion is not fixed length"
#define ERR26 "malformed number after (?("
#define ERR27 "conditional group contains more than two branches"
#define ERR28 "assertion expected after (?("
#define ERR29 "(?p must be followed by )"
#define ERR30 "unknown POSIX class name"
#define ERR31 "POSIX collating elements are not supported"
#define ERR32 "this version of PCRE is not compiled with PCRE_UTF8 support"
#define ERR33 "characters with values > 255 are not yet supported in classes"
#define ERR34 "character value in \\x{...} sequence is too large"
#define ERR35 "invalid condition (?(0)"
/* All character handling must be done as unsigned characters. Otherwise there
are problems with top-bit-set characters and functions such as isspace().
However, we leave the interface to the outside world as char *, because that
should make things easier for callers. We define a short type for unsigned char
to save lots of typing. I tried "uchar", but it causes problems on Digital
Unix, where it is defined in sys/types, so use "uschar" instead. */
typedef unsigned char uschar;
/* The real format of the start of the pcre block; the actual code vector
runs on as long as necessary after the end. */
typedef struct real_pcre {
unsigned long int magic_number;
size_t size;
const unsigned char *tables;
unsigned long int options;
unsigned short int top_bracket;
unsigned short int top_backref;
uschar first_char;
uschar req_char;
uschar code[1];
} real_pcre;
/* The real format of the extra block returned by pcre_study(). */
typedef struct real_pcre_extra {
uschar options;
uschar start_bits[32];
} real_pcre_extra;
/* Structure for passing "static" information around between the functions
doing the compiling, so that they are thread-safe. */
typedef struct compile_data {
const uschar *lcc; /* Points to lower casing table */
const uschar *fcc; /* Points to case-flipping table */
const uschar *cbits; /* Points to character type table */
const uschar *ctypes; /* Points to table of type maps */
} compile_data;
/* Structure for passing "static" information around between the functions
doing the matching, so that they are thread-safe. */
typedef struct match_data {
int errorcode; /* As it says */
int *offset_vector; /* Offset vector */
int offset_end; /* One past the end */
int offset_max; /* The maximum usable for return data */
const uschar *lcc; /* Points to lower casing table */
const uschar *ctypes; /* Points to table of type maps */
BOOL offset_overflow; /* Set if too many extractions */
BOOL notbol; /* NOTBOL flag */
BOOL noteol; /* NOTEOL flag */
BOOL utf8; /* UTF8 flag */
BOOL endonly; /* Dollar not before final \n */
BOOL notempty; /* Empty string match not wanted */
const uschar *start_pattern; /* For use when recursing */
const uschar *start_subject; /* Start of the subject string */
const uschar *end_subject; /* End of the subject string */
const uschar *start_match; /* Start of this match attempt */
const uschar *end_match_ptr; /* Subject position at end match */
int end_offset_top; /* Highwater mark at end of match */
} match_data;
/* Bit definitions for entries in the pcre_ctypes table. */
#define ctype_space 0x01
#define ctype_letter 0x02
#define ctype_digit 0x04
#define ctype_xdigit 0x08
#define ctype_word 0x10 /* alphameric or '_' */
#define ctype_meta 0x80 /* regexp meta char or zero (end pattern) */
/* Offsets for the bitmap tables in pcre_cbits. Each table contains a set
of bits for a class map. Some classes are built by combining these tables. */
#define cbit_space 0 /* [:space:] or \s */
#define cbit_xdigit 32 /* [:xdigit:] */
#define cbit_digit 64 /* [:digit:] or \d */
#define cbit_upper 96 /* [:upper:] */
#define cbit_lower 128 /* [:lower:] */
#define cbit_word 160 /* [:word:] or \w */
#define cbit_graph 192 /* [:graph:] */
#define cbit_print 224 /* [:print:] */
#define cbit_punct 256 /* [:punct:] */
#define cbit_cntrl 288 /* [:cntrl:] */
#define cbit_length 320 /* Length of the cbits table */
/* Offsets of the various tables from the base tables pointer, and
total length. */
#define lcc_offset 0
#define fcc_offset 256
#define cbits_offset 512
#define ctypes_offset (cbits_offset + cbit_length)
#define tables_length (ctypes_offset + 256)
/* End of internal.h */
--- NEW FILE: pcre.c ---
/*************************************************
* Perl-Compatible Regular Expressions *
*************************************************/
/*
This is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language. See
the file Tech.Notes for some information on the internals.
Written by: Philip Hazel <ph...@ca...>
Copyright (c) 1997-2001 University of Cambridge
-----------------------------------------------------------------------------
Permission is granted to anyone to use this software for any purpose on any
computer system, and to redistribute it freely, subject to the following
restrictions:
1. This software is distributed in the hope that it will be useful,
[...5136 lines suppressed...]
}
/* This "while" is the end of the "do" above */
while (!anchored &&
match_block.errorcode == PCRE_ERROR_NOMATCH &&
start_match++ < end_subject);
if (using_temporary_offsets)
{
DPRINTF(("Freeing temporary memory\n"));
(pcre_free)(match_block.offset_vector);
}
DPRINTF((">>>> returning %d\n", match_block.errorcode));
return match_block.errorcode;
}
/* End of pcre.c */
--- NEW FILE: pcre.h ---
/*************************************************
* Perl-Compatible Regular Expressions *
*************************************************/
/* Copyright (c) 1997-2001 University of Cambridge */
#ifndef _PCRE_H
#define _PCRE_H
/* The file pcre.h is build by "configure". Do not edit it; instead
make changes to pcre.in. */
#define PCRE_MAJOR 3
#define PCRE_MINOR 9
#define PCRE_DATE 02-Jan-2002
/* Win32 uses DLL by default */
#ifdef _WIN32
# ifdef STATIC
# define PCRE_DL_IMPORT
# else
# define PCRE_DL_IMPORT __declspec(dllimport)
# endif
#else
# define PCRE_DL_IMPORT
#endif
/* Have to include stdlib.h in order to ensure that size_t is defined;
it is needed here for malloc. */
#include <stdlib.h>
/* Allow for C++ users */
#ifdef __cplusplus
extern "C" {
#endif
/* Options */
#define PCRE_CASELESS 0x0001
#define PCRE_MULTILINE 0x0002
#define PCRE_DOTALL 0x0004
#define PCRE_EXTENDED 0x0008
#define PCRE_ANCHORED 0x0010
#define PCRE_DOLLAR_ENDONLY 0x0020
#define PCRE_EXTRA 0x0040
#define PCRE_NOTBOL 0x0080
#define PCRE_NOTEOL 0x0100
#define PCRE_UNGREEDY 0x0200
#define PCRE_NOTEMPTY 0x0400
#define PCRE_UTF8 0x0800
/* Exec-time and get-time error codes */
#define PCRE_ERROR_NOMATCH (-1)
#define PCRE_ERROR_NULL (-2)
#define PCRE_ERROR_BADOPTION (-3)
#define PCRE_ERROR_BADMAGIC (-4)
#define PCRE_ERROR_UNKNOWN_NODE (-5)
#define PCRE_ERROR_NOMEMORY (-6)
#define PCRE_ERROR_NOSUBSTRING (-7)
/* Request types for pcre_fullinfo() */
#define PCRE_INFO_OPTIONS 0
#define PCRE_INFO_SIZE 1
#define PCRE_INFO_CAPTURECOUNT 2
#define PCRE_INFO_BACKREFMAX 3
#define PCRE_INFO_FIRSTCHAR 4
#define PCRE_INFO_FIRSTTABLE 5
#define PCRE_INFO_LASTLITERAL 6
/* Types */
struct real_pcre; /* declaration; the definition is private */
struct real_pcre_extra; /* declaration; the definition is private */
typedef struct real_pcre pcre;
typedef struct real_pcre_extra pcre_extra;
/* Store get and free functions. These can be set to alternative malloc/free
functions if required. Some magic is required for Win32 DLL; it is null on
other OS. */
PCRE_DL_IMPORT extern void *(*pcre_malloc)(size_t);
PCRE_DL_IMPORT extern void (*pcre_free)(void *);
#undef PCRE_DL_IMPORT
/* Functions */
extern pcre *pcre_compile(const char *, int, const char **, int *,
const unsigned char *);
extern int pcre_copy_substring(const char *, int *, int, int, char *, int);
extern int pcre_exec(const pcre *, const pcre_extra *, const char *,
int, int, int, int *, int);
extern void pcre_free_substring(const char *);
extern void pcre_free_substring_list(const char **);
extern int pcre_get_substring(const char *, int *, int, int, const char **);
extern int pcre_get_substring_list(const char *, int *, int, const char ***);
extern int pcre_info(const pcre *, int *, int *);
extern int pcre_fullinfo(const pcre *, const pcre_extra *, int, void *);
extern const unsigned char *pcre_maketables(void);
extern pcre_extra *pcre_study(const pcre *, int, const char **);
extern const char *pcre_version(void);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* End of pcre.h */
--- NEW FILE: rePlugin.h ---
/* Regular Expression Plugin (This class comment becomes part of rePlugin.c)
RePlugin translate: 'RePlugin.c' doInlining: true.
See documentation and source code for the PCRE C Library Code. This plugin is designed to serve an object such as RePattern:
patternStr A 0-terminated string comprising the pattern to be compiled.
compileFlags An Integer representing re compiler options
PCREBuffer A ByteArray of regular expression bytecodes
extraPtr A ByteArray of match optimization data (or nil)
errorString A String Object For Holding an Error Message (when compile failed)
errorOffset The index in patternStr (0-based) where the error ocurred (when compile failed)
matchFlags An Integer representing re matcher options
matchSpaceObj An Integer array for match results and workspace during matching.
The instance variables must appear in the preceding order. MatchSpaceObj must be allocated by the calling routine and contain at least 6*(numGroups+1) bytes.
*/
#include "pcre.h"
#include "internal.h"
/* Adjust malloc and free routines as used by PCRE */
static void rePluginFree(void * aPointer);
static void * rePluginMalloc(size_t anInteger);
void *(*pcre_malloc)(size_t) = rePluginMalloc;
void (*pcre_free)(void *) = rePluginFree;
--- NEW FILE: study.c ---
/*************************************************
* Perl-Compatible Regular Expressions *
*************************************************/
/*
This is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language. See
the file Tech.Notes for some information on the internals.
Written by: Philip Hazel <ph...@ca...>
Copyright (c) 1997-2001 University of Cambridge
-----------------------------------------------------------------------------
Permission is granted to anyone to use this software for any purpose on any
computer system, and to redistribute it freely, subject to the following
restrictions:
1. This software is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2. The origin of this software must not be misrepresented, either by
explicit claim or by omission.
3. Altered versions must be plainly marked as such, and must not be
misrepresented as being the original software.
4. If PCRE is embedded in any software that is released under the GNU
General Purpose Licence (GPL), then the terms of that licence shall
supersede any condition above with which it is incompatible.
-----------------------------------------------------------------------------
*/
/* Include the internals header, which itself includes Standard C headers plus
the external pcre header. */
#include "internal.h"
/*************************************************
* Set a bit and maybe its alternate case *
*************************************************/
/* Given a character, set its bit in the table, and also the bit for the other
version of a letter if we are caseless.
Arguments:
start_bits points to the bit map
c is the character
caseless the caseless flag
cd the block with char table pointers
Returns: nothing
*/
static void
set_bit(uschar *start_bits, int c, BOOL caseless, compile_data *cd)
{
start_bits[c/8] |= (1 << (c&7));
if (caseless && (cd->ctypes[c] & ctype_letter) != 0)
start_bits[cd->fcc[c]/8] |= (1 << (cd->fcc[c]&7));
}
/*************************************************
* Create bitmap of starting chars *
*************************************************/
/* This function scans a compiled unanchored expression and attempts to build a
bitmap of the set of initial characters. If it can't, it returns FALSE. As time
goes by, we may be able to get more clever at doing this.
Arguments:
code points to an expression
start_bits points to a 32-byte table, initialized to 0
caseless the current state of the caseless flag
cd the block with char table pointers
Returns: TRUE if table built, FALSE otherwise
*/
static BOOL
set_start_bits(const uschar *code, uschar *start_bits, BOOL caseless,
compile_data *cd)
{
register int c;
/* This next statement and the later reference to dummy are here in order to
trick the optimizer of the IBM C compiler for OS/2 into generating correct
code. Apparently IBM isn't going to fix the problem, and we would rather not
disable optimization (in this module it actually makes a big difference, and
the pcre module can use all the optimization it can get). */
volatile int dummy;
do
{
const uschar *tcode = code + 3;
BOOL try_next = TRUE;
while (try_next)
{
/* If a branch starts with a bracket or a positive lookahead assertion,
recurse to set bits from within them. That's all for this branch. */
if ((int)*tcode >= OP_BRA || *tcode == OP_ASSERT)
{
if (!set_start_bits(tcode, start_bits, caseless, cd))
return FALSE;
try_next = FALSE;
}
else switch(*tcode)
{
default:
return FALSE;
/* Skip over extended extraction bracket number */
case OP_BRANUMBER:
tcode += 3;
break;
/* Skip over lookbehind and negative lookahead assertions */
case OP_ASSERT_NOT:
case OP_ASSERTBACK:
case OP_ASSERTBACK_NOT:
do tcode += (tcode[1] << 8) + tcode[2]; while (*tcode == OP_ALT);
tcode += 3;
break;
/* Skip over an option setting, changing the caseless flag */
case OP_OPT:
caseless = (tcode[1] & PCRE_CASELESS) != 0;
tcode += 2;
break;
/* BRAZERO does the bracket, but carries on. */
case OP_BRAZERO:
case OP_BRAMINZERO:
if (!set_start_bits(++tcode, start_bits, caseless, cd))
return FALSE;
dummy = 1;
do tcode += (tcode[1] << 8) + tcode[2]; while (*tcode == OP_ALT);
tcode += 3;
break;
/* Single-char * or ? sets the bit and tries the next item */
case OP_STAR:
case OP_MINSTAR:
case OP_QUERY:
case OP_MINQUERY:
set_bit(start_bits, tcode[1], caseless, cd);
tcode += 2;
break;
/* Single-char upto sets the bit and tries the next */
case OP_UPTO:
case OP_MINUPTO:
set_bit(start_bits, tcod...
[truncated message content] |
|
From: Andrew C. G. <wiz...@us...> - 2002-08-27 20:47:09
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/RePlugin In directory usw-pr-cvs1:/tmp/cvs-serv1109/RePlugin Log Message: Directory /cvsroot/squeak/squeak/platforms/Cross/plugins/RePlugin added to the repository --> Using per-directory sticky tag `replugin-branch' |
|
From: John M M. <jo...@us...> - 2002-08-22 06:56:51
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Documentation In directory usw-pr-cvs1:/tmp/cvs-serv5033/squeak/platforms/Mac OS/vm/Documentation Modified Files: 3.2.8 Release Notes.rtf Log Message: 3.2.8b5 Sync comments about fix to 3.2.8b4 classic and version number information being bogus. Index: 3.2.8 Release Notes.rtf =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/Documentation/3.2.8 Release Notes.rtf,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** 3.2.8 Release Notes.rtf 8 Aug 2002 01:24:44 -0000 1.1 --- 3.2.8 Release Notes.rtf 22 Aug 2002 06:56:48 -0000 1.2 *************** *** 25,28 **** --- 25,31 ---- Some issues with alias files and folder were fixed in 3.2.7b6 and 3.2.8b3\ \ + 3.2.8b5\ + a) Oops broke the logic returning the vmversion information in classic. Also incremented os-x version (which was fine) to keep numbers in sync\ + \ 3.2.8b3 The squeak.sourceforge.net CVS tree was reorganized and the project builder project revamped. The \ major change to the source was upgrading the netscape browser plugin to 3.2.7b6 levels.\ |
|
From: John M M. <jo...@us...> - 2002-08-22 06:56:34
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer
In directory usw-pr-cvs1:/tmp/cvs-serv4887/squeak/platforms/Mac OS/vm/Developer
Modified Files:
SqueakPro5.xml
Log Message:
3.2.8b5 ensure codewarrior project is in sync with my build process
Index: SqueakPro5.xml
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer/SqueakPro5.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** SqueakPro5.xml 8 Aug 2002 04:46:45 -0000 1.3
--- SqueakPro5.xml 22 Aug 2002 06:56:27 -0000 1.4
***************
*** 606,610 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>!ªàø</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 606,610 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>"</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 3482,3486 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>!ªàø</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 3482,3486 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>"</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 6367,6371 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>!ªàø</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 6367,6371 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>"</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 9300,9304 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>!ªàø</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 9300,9304 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>"</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 12029,12033 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>!ªàø</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 12029,12033 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>"</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 14962,14966 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>!ªàø</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 14962,14966 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>"</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 17709,17713 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>!ªàø</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 17709,17713 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>"</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 20444,20448 ****
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>!ªàø</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
--- 20444,20448 ----
<SETTING><VALUE></VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
! <SETTING><VALUE>"</VALUE></SETTING>
<SETTING><VALUE></VALUE></SETTING>
</SETTING>
***************
*** 23822,23826 ****
</FILEREF>
<FILEREF>
! <TARGETNAME>Squeak VM PPC Debug</TARGETNAME>
<PATHTYPE>Name</PATHTYPE>
<PATH>OpenGLLibraryStub</PATH>
--- 23822,23826 ----
</FILEREF>
<FILEREF>
! <TARGETNAME>Squeak VM PPC Opt</TARGETNAME>
<PATHTYPE>Name</PATHTYPE>
<PATH>OpenGLLibraryStub</PATH>
***************
*** 23828,23832 ****
</FILEREF>
<FILEREF>
! <TARGETNAME>Squeak VM PPC Debug</TARGETNAME>
<PATHTYPE>Name</PATHTYPE>
<PATH>OpenGLUtilityStub</PATH>
--- 23828,23832 ----
</FILEREF>
<FILEREF>
! <TARGETNAME>Squeak VM PPC Opt</TARGETNAME>
<PATHTYPE>Name</PATHTYPE>
<PATH>OpenGLUtilityStub</PATH>
|
|
From: John M M. <jo...@us...> - 2002-08-17 16:47:00
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm In directory usw-pr-cvs1:/tmp/cvs-serv16838/squeak/platforms/Mac OS/vm Modified Files: sqMacMain.c Log Message: 3.2.8b5 Corrected #ifdef to ensure VM version is returned for classic, broke in 3.2.8b4 Index: sqMacMain.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/sqMacMain.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** sqMacMain.c 6 Aug 2002 22:36:01 -0000 1.10 --- sqMacMain.c 17 Aug 2002 16:46:56 -0000 1.11 *************** *** 455,459 **** #endif ! #if TARGET_API_MAC_CARBON && defined(__MWERKS__) if (id == 1004) return (char *) interpreterVersion; #endif --- 455,459 ---- #endif ! #if defined(__MWERKS__) if (id == 1004) return (char *) interpreterVersion; #endif |
|
From: John M M. <jo...@us...> - 2002-08-08 04:46:51
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer
In directory usw-pr-cvs1:/tmp/cvs-serv32657/squeak/platforms/Mac OS/vm/Developer
Modified Files:
SqueakPro5.xml
Log Message:
3.2.8b4 Cleanup. Note the carbon VM builds don't produce a usable VM. However we use Project Builder to build this. Someday we'll fix it. For now you can build a Classic VM, the netscape plugins both for classic and for Carbon
Index: SqueakPro5.xml
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer/SqueakPro5.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** SqueakPro5.xml 6 Aug 2002 22:29:00 -0000 1.2
--- SqueakPro5.xml 8 Aug 2002 04:46:45 -0000 1.3
***************
*** 129,141 ****
<SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
</SETTING>
- <SETTING>
- <SETTING><NAME>SearchPath</NAME>
- <SETTING><NAME>Path</NAME><VALUE>Lamie:Squeak:SqueakAtSourceForge:squeak:platforms:</VALUE></SETTING>
- <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING>
- <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
- </SETTING>
- <SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING>
- <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
[...1476 lines suppressed...]
***************
*** 24278,24285 ****
<PATHFORMAT>MacOS</PATHFORMAT>
</FILEREF>
- <GROUP><NAME>68K</NAME>
- </GROUP>
- <GROUP><NAME>68KOpenTransport</NAME>
- </GROUP>
<GROUP><NAME>PPC</NAME>
<FILEREF>
--- 23772,23775 ----
***************
*** 24356,24361 ****
</FILEREF>
</GROUP>
- </GROUP>
- <GROUP><NAME>FAT Target Files Opt</NAME>
</GROUP>
</GROUPLIST>
--- 23846,23849 ----
|
|
From: John M M. <jo...@us...> - 2002-08-08 04:45:14
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm In directory usw-pr-cvs1:/tmp/cvs-serv32223/squeak/platforms/Mac OS/vm Modified Files: sqMacNSPlugin.c Log Message: 3.2.8b4 Remove debug flag Index: sqMacNSPlugin.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/sqMacNSPlugin.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** sqMacNSPlugin.c 6 Aug 2002 21:51:22 -0000 1.7 --- sqMacNSPlugin.c 8 Aug 2002 04:45:11 -0000 1.8 *************** *** 138,142 **** #define STARTINGsqueakHeapMBytes 20*1024*1024 ! #define PLUGIN_TRACE 1 #if PLUGIN_TRACE --- 138,142 ---- #define STARTINGsqueakHeapMBytes 20*1024*1024 ! //#define PLUGIN_TRACE 1 #if PLUGIN_TRACE |
|
From: John M M. <jo...@us...> - 2002-08-08 04:44:54
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm In directory usw-pr-cvs1:/tmp/cvs-serv32024/squeak/platforms/Mac OS/vm Modified Files: osExports.c Log Message: 3.2.8b4 fixes for building as a carbon/classic VM, messed up ifdef in adding plugin logic Index: osExports.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/osExports.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** osExports.c 8 Aug 2002 01:26:44 -0000 1.4 --- osExports.c 8 Aug 2002 04:44:50 -0000 1.5 *************** *** 57,61 **** XFN(serialPortWriteFrom) XFN(IsKeyDown) ! #if !defined(PLUGIN) & TARGET_API_MAC_CARBON XFN(getUIToLock) #endif --- 57,61 ---- XFN(serialPortWriteFrom) XFN(IsKeyDown) ! #if !defined(PLUGIN) & I_AM_CARBON_EVENT XFN(getUIToLock) #endif |
|
From: John M M. <jo...@us...> - 2002-08-08 01:27:48
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Documentation
In directory usw-pr-cvs1:/tmp/cvs-serv19443/squeak/platforms/Mac OS/vm/Documentation
Modified Files:
readme
Log Message:
3.2.8b3 Changes per feedback from Roger Vossler. Added comments on how to build PrintJobPlugin as internal plugin
Index: readme
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/Documentation/readme,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** readme 6 Aug 2002 22:27:07 -0000 1.2
--- readme 8 Aug 2002 01:27:46 -0000 1.3
***************
*** 7,11 ****
-- Changes Andrew C. Greenberg, Jan 1st 2002
-- Changes Jay Hardesty, July 6, 2002
! -- Changes John Mcintosh & Andrew C. Greenberg. Aug 8th, 2002
(Note to readers, it is possible a step was missed, so beware)
--- 7,11 ----
-- Changes Andrew C. Greenberg, Jan 1st 2002
-- Changes Jay Hardesty, July 6, 2002
! -- Changes John Mcintosh & Andrew C. Greenberg. Aug 6 & 7th, 2002
(Note to readers, it is possible a step was missed, so beware)
***************
*** 47,51 ****
D. cvs -z3 -d:pserver:ano...@cv...:/cvsroot/squeak co platforms
E. For printing support get RealPrintingPlugin-JMM.cs.gz, from http://swiki.gsug.org:8080/sqfixes/all
! decompress it and fileIn (optional, currently a plugin in the offical build)
--- 47,52 ----
D. cvs -z3 -d:pserver:ano...@cv...:/cvsroot/squeak co platforms
E. For printing support get RealPrintingPlugin-JMM.cs.gz, from http://swiki.gsug.org:8080/sqfixes/all
! decompress it and fileIn (optional, currently an external plugin in the offical build)
! (more on how to do this later).
***************
*** 81,85 ****
Mpeg3Plugin
TestOSAPlugin
! RealPrintingPlugin (if installed))
G. Press button "Save Configuration" to save your configuration for later.
H. Press button "Generate All" to build the interpreter
--- 82,86 ----
Mpeg3Plugin
TestOSAPlugin
! PrintJobPlugin (if installed, we'll discuss how to built this later as built in)
G. Press button "Save Configuration" to save your configuration for later.
H. Press button "Generate All" to build the interpreter
***************
*** 88,92 ****
Step Four: Get, and install, the Gnifier, and gnuify the interpreter
! A. See the Gnuifier.2.cs changeset in the specialChangeSetsFolder
B. DoIt: (Gnuifier on: pathToInterpreterfile) gnuify, in my case:
--- 89,93 ----
Step Four: Get, and install, the Gnifier, and gnuify the interpreter
! A. See the Gnuifier.3.cs changeset in the specialChangeSetsFolder
B. DoIt: (Gnuifier on: pathToInterpreterfile) gnuify, in my case:
***************
*** 98,102 ****
Step Five: Shove and Tweak some files around the buildspace
! A. Open a MacOSX Finder browser and go to the platforms/Mac OS/src/vm/Developer folder.
B. Unstuff 'resources.sit'
1. select the file
--- 99,103 ----
Step Five: Shove and Tweak some files around the buildspace
! A. Open a MacOSX Finder browser and go to the platforms/Mac OS/vm/Developer folder.
B. Unstuff 'resources.sit'
1. select the file
***************
*** 120,124 ****
Files which can't be found are listed in red. For any red highlighted files you'll need to
resolve where or why the files is/are missing.
- Note you will need to add the PrintJobPlugin files if you choose to build that plugin as internal.
D. On the left pane, there are some vertically oriented fold-over tabs.
Click the one marked "Targets."
--- 121,124 ----
***************
*** 126,134 ****
F. On the left lower pane marked "Build Styles," select "Deployment"
G. Click on the hammer icon at the top left to build your VM.
! The final product should live in the src/vm/Build folder, named "Squeak VM Opt"
Compare against the offical build to see if it is the same.
Note you should look at the binary in the Contents subfolder to see if it is the same size.
(The only error you should get is
warning: passing arg 1 of `sqImageFileStartLocation' makes integer from pointer without a cast)
Step Seven: Download and print your Squeak VM Developer's Certificate
--- 126,135 ----
F. On the left lower pane marked "Build Styles," select "Deployment"
G. Click on the hammer icon at the top left to build your VM.
! The final product should live in the build folder, named "Squeak VM Opt"
Compare against the offical build to see if it is the same.
Note you should look at the binary in the Contents subfolder to see if it is the same size.
(The only error you should get is
warning: passing arg 1 of `sqImageFileStartLocation' makes integer from pointer without a cast)
+ Run a tinyBenchmark benchmark against your VM, versus the production VM to confirm yours is simular in performance
Step Seven: Download and print your Squeak VM Developer's Certificate
***************
*** 140,143 ****
--- 141,172 ----
1 tinyBenchmarks
Is also a good idea against the production VM, and yours to confirm it's built correctly.
+
+
+ Building with PrintJobPlugin as internal
+
+ Add to the build as internal plugin list
+ do a "clean out"
+ do a "Generate all"
+
+ This should result in a folder being created
+ src/vm/intplugins/PrintJobPlugin
+ and of course we also use the code in
+ platforms/Mac OS/plugins/PrintJobPlugin folder
+
+ Returning to the project builder project we need to add a number of files to the project.
+
+ In the "Files" tab view
+ Select down to the location we want to put the built source
+ Sources/src/plugins/vm/intplugins
+ Create a new group called PrintJobPlugin
+ Add the file PrintJobPlugin.c from src/vm/intplugins/PrintJobPlugin to that group
+
+ Do the same type of work to select the other files need to build the plugin
+ PrintJobPlugin.h file from the platforms/Cross/plugins/PrintJobPlugin folder
+ that should go in the Sources/Cross/plugins/PrintJobPlugin group that you will create
+ sqMacPrinting.c & sqMacPrinting.h from the platforms/Mac OS/plugins/PrintJobPlugin
+ these should go in the Sources/Mac OS/plugins/PrintJobPlugin group that you will create
+
+
---------------------------------------------------
|
|
From: John M M. <jo...@us...> - 2002-08-08 01:26:47
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm In directory usw-pr-cvs1:/tmp/cvs-serv19116/squeak/platforms/Mac OS/vm Modified Files: osExports.c Log Message: 3.2.8b3 fixes for building as a classic VM, messed up ifdef in adding plugin logic Index: osExports.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/osExports.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** osExports.c 6 Aug 2002 21:41:21 -0000 1.3 --- osExports.c 8 Aug 2002 01:26:44 -0000 1.4 *************** *** 57,61 **** XFN(serialPortWriteFrom) XFN(IsKeyDown) ! #ifndef PLUGIN XFN(getUIToLock) #endif --- 57,61 ---- XFN(serialPortWriteFrom) XFN(IsKeyDown) ! #if !defined(PLUGIN) & TARGET_API_MAC_CARBON XFN(getUIToLock) #endif |
|
From: John M M. <jo...@us...> - 2002-08-08 01:25:34
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/plugins/PrintJobPlugin In directory usw-pr-cvs1:/tmp/cvs-serv18711/squeak/platforms/Mac OS/plugins/PrintJobPlugin Modified Files: sqMacPrinting.c Log Message: 3.2.8b3 Fix to build as internal plugin, needs static for color table logic Index: sqMacPrinting.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/plugins/PrintJobPlugin/sqMacPrinting.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sqMacPrinting.c 5 Jul 2002 06:56:51 -0000 1.3 --- sqMacPrinting.c 8 Aug 2002 01:25:31 -0000 1.4 *************** *** 13,16 **** --- 13,17 ---- * Feb 20th 2002, JMM - add offset logic, free printsession only if allocated (duh) * Jun 27th 2002, JMM - use UILock code to lock UI to prevent os-x seg fault + * Aug 7th, 2002, JMM - fixes to build as internal * *****************************************************************************/ *************** *** 45,50 **** Globals ------------------------------------------------------------------------------*/ ! CTabHandle stColorTable = nil; ! PixMapHandle stPixMap = nil; extern struct VirtualMachine *interpreterProxy; --- 46,51 ---- Globals ------------------------------------------------------------------------------*/ ! static CTabHandle stColorTable = nil; ! static PixMapHandle stPixMap = nil; extern struct VirtualMachine *interpreterProxy; |
|
From: John M M. <jo...@us...> - 2002-08-08 01:24:48
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Documentation
In directory usw-pr-cvs1:/tmp/cvs-serv18412/squeak/platforms/Mac OS/vm/Documentation
Added Files:
3.2.8 Release Notes.rtf
Log Message:
3.2.8b3 Release notes for 3.2.8
--- NEW FILE: 3.2.8 Release Notes.rtf ---
{\rtf1\mac\ansicpg10000\cocoartf100
{\fonttbl\f0\fnil\fcharset77 Geneva;\f1\fnil\fcharset77 LucidaGrande;\f2\fswiss\fcharset77 Helvetica;
}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww17300\viewh12720\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\fs24 \cf0 Mac VM 3.2.8 mach-o build for Carbon, and build for Classic.\
Aug 7th, 2002 (3.2.8b3)\
Still yet to do, in future versions.\
Verify that file delete rename etc works on aliases, not the targets.\
You will need mach-o os-x bundle plugins to work with this VM. example ->
\f1 mpeg3Plugin.bundle.\
Old carbon non-bundled plugins will not work, but keep reading to understand where classic \
plugins still are needed.\
\f0 \
Pre OS-X users should read about OS-9 packages in the 3.2.4 change notes.\
Notes About previous VM.\
3.2.6 VM classic have an issue when the tickcount clock goes over 0x7FFFFFFF, about 24 days. \
This exhibits it self as Squeak won't accept user input, or allow you to switch under os 9 or earlier.\
Starting a Squeak image hangs durning the screen painting.\
Restarting the mac solved these problems. Force quit does not.\
This is fixed in 3.2.7b3\
Some issues with alias files and folder were fixed in 3.2.7b6 and 3.2.8b3\
\
3.2.8b3 The squeak.sourceforge.net CVS tree was reorganized and the project builder project revamped. The \
major change to the source was upgrading the netscape browser plugin to 3.2.7b6 levels.\
\
a) Gnunifer.3.cs Changed to add register var on FOO_REG and to remove sqGnu.h file embedded in method.\
b) sqMacDirectory.c Add logic to handle case of building as CFM carbon plugin under CW6, needed some carbon calls\
c) osExports.c needed to ifdef out the getUIToLock entry point (not available as CFM carbon browser plugin)\
d) sqMacFileLogic.c Fix alias problem. Add logic to deal with path names as CFM carbon browser plugin, ensure vmPath is correct.\
e) sqMacImageIO.c Cast to get rid of warning message\
f) sqMacMain.c Cast to get rid of warning message, Check for CFM Carbon and bundle check. Revise vm parm 1201 code to return long file names are ok as CFM carbon browser plugin. Some diagnostic routines for printing to the console as CFM carbon browser plugin.\
g) sqMacMemory.c Logic change as CFM carbon browser plugin.\
h) sqNSPlugin.c Fix to beginFullScreen logic (carbon call is broken?)\
i) sqMacUIEvents.c Remove getUIToLock dummy call. This entry point should only exist for mach-o carbon builds. Not CFM carbon browser plugins\
j) sqMacWindow.c Use old call to create window when a CW 5 carbon application.\
k) sqPlatformSpecific.h Change #ifdef to correct logic error when building as CFM carbon browser plugin under CW 5.\
\
\
\
May 31st, 2002 (3.2.7b6)\
For 3.2.7\
\
3.2.7b3 We build the VM using patchs to enable globals as a structure. This improves performance by 10%\
\
a) Classic Vm builders might need to add "struct foo *foo = &fum; " to int interpret(void). \
b) readme: add notes about changesets and alter build instructions\
c) sqMacFileLogic.c: use accessors for interp.c globals\
d) sqMacMain.c: use accessors for interp.c globals. Also Alain Fischer added logic to fetch os-x version number and to enable you to put squeak.image in the resource folder for autostarting.\
e) sqMacTime.h: Fix busted lowresclock again. After 24 days of mac uptime, 3.2.6 squeak will hang.\
f) sqMacUIEvents.h: use accessors for interp.c globals.\
g) sqPlatformSpecific.h: alter sqFTruncate to use fileno() as needed.\
h) sqMacWindow.c: use accessors for interp.c globals.\
i) 3.2.7b5 sqMacFileLogic.c: change vmpath to resolve to classic VM if vm is moved from MacOSClassic folder\
j) Misc changes for Netscape plugin support\
k) Introduce osExports.c logic\
l) 3.2.7b6 Fixed a problem in path name resolving need to use UTF8 to properly interact with high ascii characters\
m) 3.2.7b6 Fixed a problem in path name resolving there was a bug with certain types of alias path name combinations in quick name resolving.\
\
Mac VM 3.2.6 mach-o build for Carbon, and build for Classic.\
March 14th, 2002\
Still yet to do, in future versions.\
Verify that file delete rename etc works on aliases, not the targets.\
\
You will need mach-o os-x bundle plugins to work with this VM. example ->
\f1 mpeg3Plugin.bundle.\
Old carbon non-bundled plugins will not work, but keep reading to understand where classic \
plugins still are needed.\
\f0 \
Pre OS-X users should read about OS-9 packages in the 3.2.4 change notes.\
Notes About previous VM.\
3.2.6b6 Classic or earlier has a bug that makes it stop collecting user input on a 19.88 hour cycle depending on reboot time.\
Seems many systems don't run for more than 19 hours so we've not had major complains about this issue. \
Bug was introduced in 3.2.1.\
3.2.5 has a bug that prevents the use of accented characters without \
a image patch to fix a VM issue (not an issue in 3.2.4). Also you can't enter an double keystroke characters, ie ^ \
which makes life difficult. It also does not support the AppleScript Plugin (not an issue in 3.2.4)\
3.2.4 a bug in project builder introduced a performance problem (bad compiler options).\
\
See the 3.2.5 about why this 3.2.6 is different inside.\
\
For 3.2.6:\
a) Change an internal number that dictates how often pending interrupts should be looked at from 5ms to 3ms This improves \
delay accuracy.\
b) Change how sleeping is done when squeak is idle. This reduces CPU consumption, and improves Delay accuracy.\
c) Fix bug with high bit problem with keyboard (accented characters are ok now)\
c2) 3.2.6b6 has fixed characters that require multiple key strokes to enter.\
d) Externals that make UI interactions (IE AppleScript) Must now make a call back to the VM to schedule\
the main thread to do the call that will invoke UI interaction to prevent a deadlock in Carbon between threads. \
See the OSAExecute call in the AppleScript plugin for details.\
e) If you run a classic mac VM more than 23.x days nonstop it will stop responding to UI events. Ensure clocks get anded with 536870911.\
f) signal inputSemaphoreIndex because we are mulithreaded. Not that it does anything for us yet...\
g) 3.2.6b6 Pass the unicode value of the keystroke up as the EventKeyDown/EventKeyUp data, versus mackeyboard code.\
h) Somewhere there is a bug with mktime + time, so use the unix code of time+localtime+gmt \
i) Change iorelinquishPrcessorForMicroseconds to sleep the quatum between now and wakeup time. Also schedule a\
check for interrupts if wakeup time is now or in the past. This improves delay accuracy. For OS-x this was a big deal,\
for os-9 it improves things by 1 or 2ms. Also in os-x we sleep more when idle so CPU usage goes down.\
j) On OS-9 umap AND free the VM backing store. Just doing the free doesn't work and you lose 128Mb of disk space until you reboot\
k) 3.2.6b7 for post event processing ignore mouse move/drag/or scroll wheel events. These are ignored by the open/gl plugin and only suck a major amount of CPU time to process in the post event processing logic. \
l) 3.2.6b8 (3.2.6b4 classic) removed call to uncouple shift keys introduced in 3.2.1. This causes some macs after sleeping not to respond to keyboard input\
m) 3.2.6b8 (3.2.5b7 classic) added function for ioLowResMSecs to avoid early bit overflow. Rework clock checking in ioHandleEvents to handle clock rollovers properly.\
\
Mac VM 3.2.5 mach-o build for Carbon, and build for Classic.\
March 4th, 2002\
Still yet to do, in future versions.\
Verify that file delete rename etc works on aliases, not the targets.\
\
You will need mach-o os-x bundle plugins to work with this VM. example ->
\f1 mpeg3Plugin.bundle.\
Old carbon non-bundled plugins will not work, but keep reading to understand where classic \
plugins still are needed.\
\f0 \
Pre OS-X users should read about OS-9 packages in the 3.2.4 change notes.\
\
Beware this version of the VM is significantly different inside! \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f2 \cf0 a) Broke sqMacWindow.c into 10 different files by function type.\
\
b) Moved most of the memory allocation logic out of sqMacMain.c into sqMacMemory.c. and ensure memory is freed when Squeak is terminated. \
The major change in this code is support for OS 9.x virtual memory mapping. This only applies to Mac OS 9.2.0 or higher, excluding os-x. It appears Mac OS 9.1 has a bug that prevents this feature from working.\
\
For images that require less than 128MB of memory, mapping is used to allow the image to grow/shrink to the 128MB boundary, therefore you can change the application memory size to about 2MB. \
\
For images that require more than 128MB then change the application memory size to > 128MB and mapping will not occur. \
\
If mapping is not available because virtual memory is turned off or the api is not supported by the macintosh OS then mapping is not used. Note that mapping is not support under the classic os-9.x environment under OS-X, however in this case you should be using the OS-X version of Squeak, not the classic version.\
\
c) Use of Carbon event logic for OS-X only. This is a major structural change. \
\
It also encouraged the use of a pthread for interp.c. \
\
All user interaction with the VM follows a new code path, so problems with keyboard or mouse input should be reported asap. Also any issues with application switching, windows being brought to the foreground or sent to the background and usage of the full screen logic should be reported asap.\
\
As part of this change I have build in support for scroll-wheeled multi-button mice under os-x. Thanks to Doug Way for testing this for me. Maybe someone can post to the list what their favorite 3 button scroll wheeled mouse/trackball is.\
\
d) Use of a carbon call to get the dominate Device if you have multiple screens. People with multiple screens should confirm window resizing, full screen on/off works as expected.\
\
e) Corrected comment in sqMacFileLogic.c\
\
f) Changes to sqMacNSPlugin.c. This makes it compile, but it's not usable yet.\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0 \cf0 \
\
Feb 20th 2002 3.2.4\
\
For this version of the VM I have migrated towards using OS-9 packages. This allows us to provide one \
folder/package that supports os-x and previous operating system versions.\
\
Given Squeak 3.2.4Beta1.app\
The classic VM is found in the *.app:Contents:MacOSClassic, with an alias in *.app:\
The mach-o OS-X VM is found in *.app.Contents:MacOS\
\
If you are running OS-9 then clicking on the *.app or doing drag and drop will just run Squeak, same applies for OS-X.\
If you are running OS-7.5.5 or OS-8.x then the *.app package will appear as a folder, just open and click on the alias within. \
Note that if you want to use classic plugins I suspect you need to put them in the MacOSClassic Folder beside the VM. \
Bundles for os-x go in the same location as the *.app application package.\
\
Changes\
a) Drag and drop at open time with image file that has no meta type, will now open the image, versus prompting you.\
b) Use an os-x window attribute at open time to signal that the window should not be moved by the dock when you go to full screen.\
c) Fix window update logic to use window that needs updating versus stwindowg to fix issues with print dialog windows in classic. \
d) bitblt gets recompile to pickup fixes posted in 3.2 update stream.\
\
Feb 5th 2002 3.2.3\
Changes\
\
a) use old extended time manger to update psudeo-TickCount, versus sigalrm. siglarm make sound recording not work.\
b) fiddle with sound recording and make it work.\
\
Jan 2002 3.2.2\
Changes:\
\
a) AsyncFilePlugin.c Use global to remember security function entry point for performance reasons\
b) FilePlugin.c Use global to remember security function entry point for performance reasons\
c) interp.c Use squeakFileOffsetType versus off_t and add a bunch of checks to handle lack of long long and conversion errors between 64/32 bit integers and LargeInteger objects\
d) readme, it's http://www.mucow.com/Gnuifier.1.cs \
e) SocketPlugin.c Use global to remember security function entry point for performance reasons\
f) sq.h added default sqFilenameFromStringOpen and sqTruncate\
g) sqFilePluginBasicPrims.c revert to anti specs, but ensure #def to fseeko and ftello for 64 bit aware file systems.\
h) sqMacDirectory.c A bit more error checking on bad file names\
i) sqMacFileLogic.c Folders size is now zero in classic, and a bit more checking on bad file names\
j) sqMacSound.c Fixed a problem with sound recording in classic due to a change made in Sept. But sound recording still does not work under os-x\
k) sqMacWindow.c two very important changes:\
\
1) You can now do FFI calls with the FFI bundle plugin to Mach-o frameworks. \
However you need to rework your api calls. For example:\
apiGetMousePoint: aMacPoint was\
<apicall: void 'GetMouse' (MacPoint*) module:'InterfaceLib'>\
It now is:\
<apicall: void 'GetMouse' (MacPoint*) module:'Carbon.framework'>\
\
If you review /System/Library/Frameworks I'm sure you can come up with interesting ways to \
make mac only squeak images.\
\
I now use map( NULL, gMaxHeapSize, PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED,-1,0);\
anonymous memory mapping to 512MB as the squeak memory block. The VM can then grow or shrink\
within the 512MB block, I just move a pointer. \
\
Note in 3.2.1 a slight error on my part restricted Squeak to 50MB. I am of course\
interested to hear about issues with my choice of 512MB. Note a Squeak VM is limited to 2GB under perfect \
conditions, however if any part of the image crosses the 2GB boundary the VM will fail, right now 512MB\
seemed a safe choice.\
\
PhysMem: 60.2M wired, 78.6M active, 412M inactive, 551M used, 217M free\
VM: 3.03G + 55.3M 7847(0) pageins, 1(0) pageouts \
PID COMMAND %CPU TIME #TH #PRTS #DREGS RPRVT RSHRD RSIZE VSIZE\
422 Squeak VM 0.8% 0:35.59 2 71 100 23.3M 8.53M 26.5M 571M\
\
but I only have one 80,000,000 byte swap file in /var/vm\
\
Note if you turn crash reporter on, then if the VM crashes a nice report should be generated in your log directory. See the Apple documentation for a description of this feature, currently it is set in OS-X 10.1.x via the preferences window for the Console Application. If you have a crash with this VM, please recreate and post the crash log (found in Users/foobar/Library/Logs/ to the Squeak mailing list so we can continue to make the VM fault tolerant.\
\
3.2.1 Notes\
\
You might need these change sets to build a new VM or to use all the features of this VM with your image, hopefully these will get into the pending 3.2.x image.\
\
Fixes and feature extensions.\
AsyncFileFixFu...hName-JMM.1.cs fix for async test method.\
DragAndDropAtStart-JMM.5.cs fix to enable drag and drop at startup\
\
Needed to compile a VM with VMMaker\
LargeFiles-JMM.3.cs Enable large file support, files > 2GB\
\
Needed to turn this feature on\
MacLongFileName-JMM.5.cs Enable long file names on the mac\
\
The SUnit\
MacLongFileNamesSUnits-JMM.3.cs Test long file names and long directory names and large file support\
\
Kinda optional features some people might need.\
InternetConfiguration-JMM.5.cs Allow internet configuration information access, internal plugin\
UUID-JMM.3.cs Allow UUID generation, internal plugin\
\
a) The ability to get back a UUID. This uses the hosting UUID generator if the\
hosting OS supports it and we have a primitive we can call. If not then we generate\
a type 4 version of a UUID (the random bits one).\
(This requires a special change set)\
\
b) Ability to start squeak on the mac by dragging multiple documents onto the\
image, or drag and drop of stuff onto the running VM icon.\
(This requires a special change set)\
\
c) Usage of the Internet Configuration tool kit to supply information about\
what the mac proxy is etc. etc.\
(This requires a special change set)\
\
d) Migrate file system to use 64 bits. This allows you to read/write and seek\
with files > 2 GB. This includes a change to the VM to convert from/to long\
long integers. It also allows the file system to actually deal with 2GB files,\
the current file interface actually fails once the file exceeds 1GB.\
\
e) For the carbon based Squeak VM we now support long file names 255\
characters. Close both eyes and touch everywhere the mac VM deals with file\
name paths and hope for the best (Actually we write an Sunit to ensure we've\
not broken everything). This also includes the ability to put an image in a\
long file name directory, but right now the image name must stay under 32 characters.\
\
FilePlugin.c changes to support large integers.\
FilePlugin.h changes\
sq.h changes to support large files.\
sqConfig.h changes to resolve some conflicts.\
sqFilePluginBasicPrims.c changes to support large files.\
sqMacAsyncFilePrims.c changes to use fspec versus 255 file path.\
sqMacDirectory.c changes to use hosting OS (OS-X) bsd create and delete directory\
and truncate. dir_look changes as part of the general rewrite.\
sqMacDragAndDrop.c use new call to get path name from fsspec. Use fsspec more, and added \
interface code to setup drag and drop of items at application startup time. max document name\
goes to 1000 characters.\
sqMacFileLogic.c Mostly rewrote!\
sqMacSecurity.c use new file calls.\
sqMacWindow.c \
increase size of vmpath, docpath, imagepath to 1000 chars, shortname to 255 characters.\
add logic for left/right modifier keys \
reworked LoadLibViaPath logic \
sqImageFileOpen uses fsspec versus 255 path name.\
sqImageFileStartLocation uses ffspec.\
bundle support for bundles\
\
e2) interp.c supports get/put of large integers to long long integers.\
e3) fixed fTruncate\
\
Hint getting this to work was a pain. Think of 255 character folder names and nested aliases,\
folder 1 refers to folder 2 which then refers to folder 1 again, just go down the path say 8 times,\
then ask to create a file or directory!\
\
f) Support to change the Mac screen resolution under Squeak control.\
\
g) Fix to unload/load the scrap at startup time to ensure the clipboard is\
correct when starting up the VM.\
\
h) Uncouple the shift key and left/right shift keys on old extended keyboard.\
Also add a call to get which keys are currently pressed on a USB keyboard or\
the USB codes for an apple non-usb keyboard. (Note this isn't working quite yet under OS-X)\
\
i) Changes to enable us to compile the VM under Apple's OS-X Project Builder\
environments.\
\
j) Some rewriting to ensure serial and midi support can be written as external\
plugins.\
\
k) Fiddling to get sound input to work under OS-X\
\
l) Platform.exports changed macintosh to macintoshSqueak to avoid conflict.\
\
m) Memory is allocated at 50MB at start, then will grow or shrink, verus previous carbon apps\
that did 1GB. \
\
n) sqPlatformSpecific.h changes to support long file names and os-x posix file names\
\
o) sqVirtualmachine.c & sqVirtualmachine.h\
#if VM_PROXY_MINOR > 4\
VM->positive64BitIntegerFor = positive64BitIntegerFor;\
VM->positive64BitValueOf = positive64BitValueOf;\
VM->signed64BitIntegerFor = signed64BitIntegerFor;\
VM->signed64BitValueOf = signed64BitValueOf;\
#endif\
\
Beware this causes an interesting problem, if you compile plugins with VM_PROXY_MINOR now set to 5, then they will not work with older VMs. The solution is to define the VM_PROXY_MINOR in the plugin to the value that indicates what features it is using.\
\
p) Changed to use ITimer logic as a 16ms lowres timer to improve performance\
\
q) Changed to use single thread, no thread manager.\
\
r) Changed to use lowres timer in checking for polling time to improve performance\
\
s) It should have faster startup times.\
\
t) It will hide the empty window at startup, then show the squeak window when required.\
\
u) It has a different menu structure.\
\
v) It does less I/O when navigating directories.\
\
The macintosh 3.1Alpha1MT VM, Sept 24th 2001 \
This VM was built with the base 3.1 image at change set #4347\
V3.1.1 at change set #4347\
\
\
We go to V3.1.1 to indicate that the 3.1 VM is being used. In the past the 3.1 Image was used but some changes in the openGL logic makes 3.1 Vm and 3.0 image not quite work correctly with 3d graphics. Although a 3.1 VM will run many images way back to the 2x series no careful study has been done on the ability to do this. So at this point we are indicating this VM is a 3.1 VM and best used with a 3.1 image.\
\
Use of VMMaker to build VM. As of this version everything can be built as an external except for the window logic which hasn't been decoupled from the VM support for the macintosh. \
\
1) AsynchFilePlugin the security check for ability to create file is now a plugin call.\
2) B2DPlugin logic changes to fillLinearGradientfromtoat\
3) b3dRemapFaces, b3dRemapEdges, b3dRemapEdgeList, b3dRemapAET, b3dRemapEdgeVertices, b3dRemapFaceVertices, b3dRemapFaceFree, b3dRemapEdgeFree, b3dRemapAttributes. Some casting and changing of += to = + to make some compilers happy.\
4) BitBltPlugin added tableLookupat call.\
5) DropPlugin added setFileAccessCallback to allow the Security Module plugin the ability to give us the entry point to turn security off so we can open files as read only when security is turned on. This was broken in the past. \
6) FilePlugin added fileOpennamesizewrite,getThisSession to allow for callbacks. Changed the file security logic to use the plugin interface. \
7) interp.c, fixes for 4347ByteArrayRangeCheck-di, ability to printAllStacks, security calls for image rename, write to use plugin interface.\
8) Added GetAttributeString, and recordDragDropEvent and entry points for callbacks.\
9) SecurityPlugin changed when initialization is called to initialize the safe and unsafe directorys, also added entry points for all the testing calls so it can be a true plugin.\
10) Serialplugin. The serial plugin was redesigned to seperate out MIDI logic. People with MIDI devices and old serial macintosh should check to see if they still work since we lack equipment now to test this obsolete technology set.\
11) SocketPlugin. Make security calls true plugin calls.\
12 SoundGenerationPlugin. Removed \
EXPORT(int) SoundGenerationPlugin_primitiveFMSoundMix(void);\
EXPORT(int) SoundGenerationPlugin_primitiveOldSampledSoundMix(void);\
EXPORT(int) SoundGenerationPlugin_primitivePluckedSoundMix(void);\
EXPORT(int) SoundGenerationPlugin_primitiveSampledSoundMix(void);\
EXPORT(int) SoundGenerationPlugin_primitiveWaveTableSoundMix(void);\
They were a hack at the plugin level and discussion on the list seemed to show they were no longer used. \
13) Checking for if defined (__APPLE__) && defined(__MACH__) for the Mac OS-X native development environment\
14) Changed sqMacAsyncFilePrims, usage of interpreterProxy->, plugin calls for getThisSession. \
15) Changed sqMacDirectory.c. Removed some utility code and make it a seperate file so that it can be shared between sqMacWindow and other plugins that require them. \
16) Changed sqMacDragDrop.c. Added plugin callback for getSTWindow, the sqSetFileAccessCallback logic, fileOpennamesizewrite, and secHasFileAccess. Added logic to do the recordDragDropEvent callback to sqMacWindow.c \
17) sqMacNetwork.c. Some cleanup for the OS-X version of the OpenTransport headers, some constants have name changes\
18) sqMacNSPlugin.c Use of ioLoadFunctionFrom(NULL, "DropPlugin"); versus explicit call.\
19) sqMacOpenGL.c. Some cleanup for the OS-X version of the OpenGL headers\
20) sqMacOpenGLInfo.c. Some cleanup for the OS-X version of the OpenGL headers\
21) sqMacSecurity.c ioInitSecurity calls back to dragAndDrop plugin to set entry point to turn security off. Added code to create directories if required and ensured callbacks are plugitized.\
22) sqMacSound.c Some cleanup for the OS-X version of the Sound headers. Use of interpreterProxy-> in the proper places.\
23) sqMacWindow.c Some cleanup for the OS-X version of the compiler. Fixed saveAsEmbeddedImage, this got broken when we moved from a FAT to a ppc only application. Altered interface to recordDragDropEvent so that it was plugable. Some file path name logic goes to a seperate C source file. The drag and drop plugin is loaded and intialized after the image is loaded but before the interpreter is started, before it was done a bit earlier in the startup process. This also has the effect of initializing the security module.\
24)sqOpenGLRenderer.c. Some cleanup for the OS-X version of the OpenGL headers\
25)SurfacePlugin.c gets a hack so it knows when it is internal versus external.\
\
\
\
v3.0.18 at change set #4081\
(Note browser plugin goes to 3.0.23\
\
1) sqMacOpenGL.c Quite a few changes were made to the code to support it as an internal plugin for the browser. This is because the drawable frame for a browser plugin is a subset of the browser's grafport, so lots more care must be taken to draw in the correct location using OpenGL. We also fixed issues with re-configurating the Open/GL draw area when the window gets resized or goes to full screen, and attempted to ensure multiple screens will work.\
\
2) sqMacWindow.c, minor fix to cast a constant char * to char * for CW 6.1\
\
\
Browser plugin 3.0.23 fixes\
\
1) Integerated the H/W Acceleration as an builtin plugin\
2) Added logic for pre and post event interaction to browser plugin event handler for H/W Acceleration logic. The external H/W Acceleration plugin mostly works with the browser plugin but doesn't work with full screen mode, or if the plugin is embedded in a window or a scrollable frame, so don't use it. Use the browser plugin 3.0.23 or higher which has the H/W Acceleration builtin.\
\
v3.0.17 at change set #4081\
(Note browser plugin goes to 3.0.21)\
\
1) Added HW acceleration as internal plugin.\
2) 4079BBAlphaTextFix-ar Fixes the problem with alpha text, changes BitBltPlugin.c \
3) Added primitive on the mac to truncate a file.\
4) Added logic to flush volume on a flush file to ensure file and control blocks are flushed.\
5) For the Carbon VM we increase nextevent wait time if we get sufficent idle time. This should reduce CPU usage under OS-X\
6) GetAttribute: 1002 now returns the gestaltSystemVersion as a hex string, and getAttribute: 1003 now returns either '68K' or 'PowerPC'.\
7) Starting with 3.0.17 the VM is build only as a powerpc application. The latest VM as a 68K application will be made available from time to time permits based on people's needs. \
8) Changes to sqOpenGLRenderer.c to improve performance, OpenGL 1.1 support.\
\
Plugin 3.0.21 fixes\
\
1) added check for mailto: tag on posts to fix problem with Netscape crashing, and IE hanging.\
2) Plus above fixes.\
\
What has been fixed/changed.\
v3.0.16 at change set #4041\
(Note browser plugin goes to 3.0.20)\
\
1) Lots of fixes for BitBlt and HW acceleration.\
2) Hardware Acceleration plugin goes to 1.0.1. Please note there is a seperate plugin with the same name for Carbon. Doing a get info will identify if the plugin is only usable with Carbon Squeak.\
\
v3.0.15 at change set #4026 (May 17th test version)\
(Note browser plugin goes to 3.0.19)\
\
1) Added support for OpenGL HW acceleration plugin\
\
Plugin 3.0.19 fixes\
\
a) Obey embedded tag plug\
b) Fix problem with plugin 3.0.17 not working with netscape 4.x\
c) Carbonize plugin for IE 5.1 \
d) Remove debugging printf than occurred on transition to full screen mode\
\
What has been fixed/changed.\
v3.0.14 at change set #3987\
\
(Note plugin goes to 3.0.17)\
\
1) sqMacDirectory.c. The pathlookup would handle the case of foo:bar::do incorrectly by ignoring the :: path redirection. This has been fixed. However a path lookup will not work if it contains :: and an aliased directory in the middle of the path.\
\
2) sqMacSecurity.c. The pathname for the untrustedUserDirectory was built incorrectly, and the bug mentioned above in sqMacDirectory.c usually kept this from being noticed.\
\
3) sqMacWindow.c we added some logic to do the delay for primitiveRelinquishProcessor, but found it had an large effect on a freecell benchmark. I suspect on a Morpic step wait there is nothing to do so primitiveRelinquishProcessor gets called which then affects response time. So for now we revert to the 3.0.11 behavior, good performance and 100% CPU usage!\
\
4) GetAttribute 1004 returns returns interpreterVersion; which is for example\
"Squeak3.1alpha of 6 February 2001 [latest update: #3987]"\
\
5) When in full screen mode we now attempt to disable resizing, zooming, or moving the window. The window borders are hidden, but in the past it was feasible to grab an edge and alter it, thus confusing the VM.\
\
6) Worked on Carbonizing the browser plugin\
\
7) 3977 & 3978 FloatArray fixes. Makes float arrays go through a new (and working) version of #primitiveHash\
\
8) Fixed problem with accidental mouse clicks being triggered from pulldown menus on application switching.\
\
9)\
"Change Set: 3984 BitBltExtensions-ar\
Date: 4 May 2001\
Author: Andreas Raab\
\
The change set includes various extensions for BitBlt with the goal of migrating the useful features from FXBlt into the general BitBlt mechanisms. These include:\
\
* Handling of LSB and MSB forms:\
BitBlt now handles both, MSB and LSB forms (and their conversions). Only instances of Bitmap are assumed to contain big-endian pixels. All others are assumed to be little endian (reason is that we can only identify Bitmap here). Note that 'LSB' and 'MSB' refers to PIXELS, that is a 1bpp LSB form has its left most pixel in the lowest bit whereas a 1bpp MSB form has its left-most pixel in the highest bit.\
\
For pixel depths < 8 this can be different from what your OS supplies (as an example, Windows bitmaps < 8 are big-endian pixels in little-endian words; we might call them 'middle-endian'). We simply don't deal with those - forms are either big or little endian but nothing inbetween.\
\
BitBlt has got an extra combination rule for swapping pixels in the destination form. This can be used to make byte swapping much more efficient (as soon as we've got more VMs with support for it).\
\
* Handling of 'native bitmaps' (aka surfaces):\
BitBlt is now able to deal with OS surfaces that are registered with the surface plugin.\
\
* Handling of full color maps:\
BitBlt has been extended to deal with instances of ColorMap in addition to the prior mechanism of using only indexed lookups and provide an implicit 16-32 bit color conversion. ColorMaps can specify both, a lookup table and an additional set of masks and shifts to apply during the color mapping operation. \
\
Four independent shifts and masks can be given which can be used for a lot more than just color conversion (as an example, one could do byte swapping with this; but see also BitBlt class>>exampleColorMap). \
\
* Better handling of default arguments:\
For most of the required arguments for BitBlt very reasonable default assumptions can be made. This includes the destOrigin (0@0), clipRect (0@0 extent: destForm extent), sourceOrigin (0@0). BitBlt now substitutes these if they are absent (e.g., nil) in the instance provided.\
\
"\
\
\
v3.0.13 at change set #3848\
\
1) sqMacSecurity was changed to set the unsecure directory to\
system folder:Preferences:Squeak:Internet:My Squeak\
\
v3.0.12 at change set #3848\
1) Fixed problem with creating My Squeak Folder in Documents Folder with System 8.6\
\
What has been fixed/changed.\
v3.0.11 at change set #3848\
\
1) sqMacDirectory had a bug when you resolved a path name. The fast resolve always failed, which invoked the slow resolver. Now the fast resolver works.\
\
2) sqMacSecurity was changed to set the unsecure directory to Documents:My Squeak. \
\
3) sqMacWindow was changed to fix some issues with Squeak capturing events from other applications and to reduce the number of duplicate mouse events that are generated. Also we capture modifier information directly from the mouse and keyboard on null events to fix some problems with Carbon. We hopefully fixed problems with mouse clicks from foreground applications being seen by Squeak and issues with the OS-X Dock clicks.\
\
4) sqMacNSPlugin was changed to use the above mouse/keyboard capture code which is much cleaner than the original fix for the bogus modifier information given to us by netscape on a null event. \
\
5) When you turn full screen off we now correctly reposition the window to the original location versus a few pixels to the left. \
\
What has been fixed/changed.\
v3.0.10 at change set #3848\
\
1) changed VM exception unwind logic\
3796-Exception-unwind-V3,ti...@su..., Paul McDonough, Stephen Pair and others\
\
2) Fixes for the JPEGReader plugin and for Jitter 3\
\
3) Added minimal Mac VM logic to assist in building a small VM.\
\
4) Changed how the browser plugin starts up. Now it starts the interpreter running only after getting the browser setwindow command. This seems to fix a race condition that resulted in a crash at startup time with Netscape 4.x\
\
5) Fixed broken full screen redraw on cmd-tab\
\
6) Fixed what looked like mouse-down, mouse-down, mouse-up sequence. Now reports mouse-down, mouse up.\
\
7) Added StarSqueak plugin as internal plugin\
\
8) Note the current Squeak Plugin should be gotten from the www.squeakland.org site.\
\
v3.0.9 at change set #3776, Boston Snow storm build.\
\
1) A number of changes were made to the interpreter:\
a) added primitive to change a class.\
b) added primitives to get or put 32bit integers\
c) Fix problem with GC and class reshaping\
d) Better logic for method cache flushing\
\
2) Added JPEGReader plugin\
\
\
V3.0.8 at change set #3740\
\
1) The caps lock no longer maps to the shift attribute. So if the caps lock is down mouse clicks will behave normally. \
\
2) Numerous fixes for the BitBltPlugin plugin\
\
3) Memory allocation grow/shrink logic for Carbon was added.\
\
4) Spurious mouse clicks for the browser plugin has been fixed. (This took awhile to fix, I'm sure it's a bug with the Swedish version of Netscape)\
\
5) The browser plugin will attempt first to allocate memory from the browser heap, then the system heap. Most people when faced with a memory issue usually increase memory for the browser first. However memory for the plugin is controlled by an attribute in the EMBED HTML statement. \
\
V3.0.7\
\
1) A bug exists in pre OS 8.x that causes a crash in activate window if the standard get file \
dialog comes up before the Squeak Window. I remove the InvalWindow call found in that routine since it is actually redundant.\
\
2) The standard get file dialog on system 7.x would not terminate if you did a cancel.\
\
3) The InterfaceLib had to be weak linked to prevent CFM startup issues. \
\
V3.0.6\
\
1) Alias resolving is less aggressive.\
\
2) We no longer cache image reads or writes. This was done because OS 9.1 allows you to have very large disk caches, and it's pointless to cache the image read or write.\
\
3) The file flush primitive now actually flushes the file via an OS call. This was a bug in the CodeWarrior 5.3 source code.\
\
4) The 68K version was being built with the 68881 math library. This fails on 68040LC chips. We now use the non-68881 math library. Thanks to Bruce ONeel for find this.\
\
5) A bug was found in the path resolving logic that was added for 3.x. This bug apparently only affects 68K machines, never was identified as a PowerPC issue. \
\
6) The Netscape plugin needs a properly allocated clip region, this code seemed to work ok on new systems, but fails on system 7.6.1\
\
7) The security interface will create a Documents folder on the root volume if the default Document folder has been deleted. This is needed for security purposes. \
\
8) Jitter needs 1MB of free memory to run.\
\
9) 68K machines require another 32K of stack\
\
10) Threads now work on 68K machines, but turned off because of possible performance issues. (I think more study is needed).\
\
11) The 68K version was compiled with better optimization, expect a 15% improvement.\
\
12) fix for BitBltPlugin ascii = byteAt((sourcePtr + charIndex) - 1);\
\
13) The interpreter object validation checking code was alter to work correctly.\
\
V3.0.5\
\
1) sqConfig.h changed due to BE OS header changes\
\
2) sqMacDirectory.c. Added support for Navigation services or Standard File Get to find the image at startup time when the Squeak.image is not found by the VM. This replaces the DOS like console message that comes up saying that Squeak can't find a image.\
\
3) A fix to drag and drop for the browser plugin.\
\
4) We now use Apple's cooperative multithreading package to run the UI in one thread, the VM in the other. This solves some issues with the browser and makes the UI versus VM logic and execution responsibilities easier to understand. \
\
5) Changed the sqMacNSPlugin.c code to support a 3.0VM using multithreading support. This should give Squeak in a browser better performance. Also changed the full screen support to correctly work with multiple monitors.\
\
6) BitBltPlugin.c gets one more op code\
\
7) Added the security interface\
\
8) Added the file flush primitive\
\
9) Rewrote the macintosh readme file\
\
10) Revisited the zoomWindow code and found a bug with multiple monitor support, then I fixed the code to make Full Screen mode work on screen that Squeak window is mostly on, versus the menubar screen. Also if you switch from full screen back it resizes the window back to the orginal size and location before you invoked the full screen. \
\
V3.0.2\
Plugins\
\
Recompiled the internal BitBltPlugin plugin to encorporate:\
Change Set: 258AlphaBlendOpt-dsm\
Author: Duane Maxwell, Paul Phillips/exobox\
a) Short circuits full opaque and full transparent pixels when alpha blending.\
\
Recompiled the internal LargeIntegerPlugin\
3298LargeIntegersV1-2-sr -- Stephan Rudlof -- 29 November 2000\
3299LargeIntV1-2For29-sr -- Stephan Rudlof -- 29 November 2000\
\
VM Software\
\
(b) PowerManagement for macintosh is now supported. You can disable the power manager to give you better performance on some powerbooks at the expense of battery life. See the Preferences Panel for details, category 'Performance'\
- changed sq.h\
- changed sqMacWindow.c to add support for power mgr disabling\
\
(c) Drag and Drop support for the macintosh, dragging files from the Finder to the Squeak window is now supported.\
- sqMacDragDrop.c added\
- sqMacWindow.c changed\
\
(d) Added primitive for get macintosh creator and file type.\
- sqMacDirectory.c changed\
\
(e) Carbon support. Thanks to Karl Goiser ka...@wa... for work he did on sound and other Carbonization hotspots.\
- sqMacAsyncFilePrims.c changed\
- sqMacFFIPPC.c changed (not supported for Carbon)\
- sqMacNetwork.c changed per Apple tech note 1173 Carbon asset tracking\
-sqMacSerialAndMIDIPort.c chnaged (Not supported for Carbon)\
- sqMacSound.c changed per Apple tech note 1198 Carbon double sound buffer playing\
- sqMacWindow.c changed (various changes for Carbon)\
\
(f) Poll at least 60 times a second for the mouse if required. Previous 2.9.x VM did it 30 times but this is too slow and 2.8.x VM do it 60 times a second.\
\
(g) Reworked path support Thanks to Karl Goiser ka...@wa... for starting this.\
- sqmacDirectory.c changed reworked lookupPath\
- sqMacWindow.c changed, added GetApplicationDirectory to get application directory\
\
(h) I rewrote the sqMacDirectory.c logic to enable proper understanding of Apple's Alias logic. This means for example you can alias the "SqueakV3.sources" file and then only have one copy and have all your images point to it. \
\
(i) Added Zoom Window support.\
\
(j) Change the Squeak change file icon to better match Apple's visual guidelines, Thanks to Doug Way for the suggestion and the new icons.\
\
(k) The sound plugins have changed...\
\
(j) Dropped FFI out of the base Squeak because of security concerns\
\
(k) Compiled for 750(G3) processor versus 603\
\
(l) Added screenDepth primitive\
\
The 3.0.x VM contains most of the optional plugins, you might want to check this by inspecting "Smalltalk listBuiltinModules" to see where your plugins are coming from. In some case people have been accidentally overriding the new builtin plugins with older plugins. \
\
The file "Squeak 3.0Alpha10MT.sig" contains the PGP signature for the Squeak 3.0Alpha10MT VM\
\
John M McIntosh jo...@sm...\
\
\
\
\
\
\
\
\
}
|
|
From: John M M. <jo...@us...> - 2002-08-06 22:36:03
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm
In directory usw-pr-cvs1:/tmp/cvs-serv26470/squeak/platforms/Mac OS/vm
Modified Files:
sqMacMain.c
Log Message:
3.2.8b3 Minor fix to remove warning on production compile
Index: sqMacMain.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/sqMacMain.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** sqMacMain.c 6 Aug 2002 21:44:10 -0000 1.9
--- sqMacMain.c 6 Aug 2002 22:36:01 -0000 1.10
***************
*** 237,241 ****
pthread_mutex_init(&gEventUILock, NULL);
pthread_cond_init(&gEventUILockCondition,NULL);
! err = pthread_create(&thread,null,interpret, null);
if (err == 0) {
SetUpCarbonEvent();
--- 237,241 ----
pthread_mutex_init(&gEventUILock, NULL);
pthread_cond_init(&gEventUILockCondition,NULL);
! err = pthread_create(&thread,null,(void *) interpret, null);
if (err == 0) {
SetUpCarbonEvent();
|
|
From: John M M. <jo...@us...> - 2002-08-06 22:35:29
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm
In directory usw-pr-cvs1:/tmp/cvs-serv26280/squeak/platforms/Mac OS/vm
Modified Files:
sqMacImageIO.c
Log Message:
3.2.8b3 minor fix to remove warning on production compile
Index: sqMacImageIO.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/sqMacImageIO.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** sqMacImageIO.c 23 Feb 2002 11:25:39 -0000 1.2
--- sqMacImageIO.c 6 Aug 2002 22:35:27 -0000 1.3
***************
*** 119,123 ****
sqImageFile remember;
! sqFilenameFromStringOpen(cFileName, fileName, strlen(fileName));
remember = fopen(cFileName, mode);
if (remember == null)
--- 119,123 ----
sqImageFile remember;
! sqFilenameFromStringOpen(cFileName,(long) fileName, strlen(fileName));
remember = fopen(cFileName, mode);
if (remember == null)
|
|
From: John M M. <jo...@us...> - 2002-08-06 22:29:40
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer In directory usw-pr-cvs1:/tmp/cvs-serv23810/squeak/platforms/Mac OS/vm/Developer Modified Files: SqueakVMForCarbon.pbproj.sit Log Message: 3.2.8B3 Changes to make an initial build more simplistic Index: SqueakVMForCarbon.pbproj.sit =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/Developer/SqueakVMForCarbon.pbproj.sit,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsc2UCNf and /tmp/cvsIrffll differ |