void functionLoader_Gui(JSGlobalContextRef ctx, JSObjectRef jobjGlobal);
XtAppContext app_con;
-WidgetClass xawWidetTypes[] = {};
+JSContextRef global_ctx;
XtOrientation xawOrientationDirection[]={XtorientHorizontal, XtorientVertical};
-Widget *myWidgets;
-xawWidet *myCtrls;
+volatile Widget *myWidgets;
+volatile xawWidet *myCtrls;
int objIDc = 0;
+volatile jsCallbackInfo *myCallBacks;
+
/* コールバック関数 */
+#pragma GCC optimization_level 0
void xawJsCallbackFunction( Widget w, XtPointer client, XtPointer called )
{
- jsCallbackInfo* mycallback = (jsCallbackInfo *) client;
- JSObjectCallAsFunction(mycallback->Context, mycallback->Function, NULL, 0,NULL,NULL);
+ JSObjectCallAsFunction((*(jsCallbackInfo*)client).Context, (*(jsCallbackInfo*)client).Function, NULL, 0,NULL,NULL);
}
+#pragma GCC optimization_level reset
Widget createForm(Widget* form, xawWindow window)
{
Widget createControl(xawWidet widget, jsCallbackInfo* callinfo)
{
- myWidgets = (Widget *)realloc( myWidgets, sizeof(Widget)*(objIDc+2) );
+ myWidgets = (Widget *)realloc( (void*)myWidgets, sizeof(Widget)*(objIDc+2) );
if( myWidgets == NULL )//ポインタが空っぽだったら実行停止。
{
printf( "Memory re-allocation failed!\n" );
return myWidgets[objIDc+2];
}
+#pragma GCC optimization_level 0
static JSValueRef jsControlCreate(
JSContextRef ctx,
JSObjectRef jobj,
//parent
int parentID = (int)JSValueToNumber(ctx,
JSObjectGetProperty(ctx,
- JSObjectGetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("Parent"), jobjExp),
+ (JSObjectRef)JSObjectGetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("Parent"), jobjExp),
JSStringCreateWithUTF8CString("ID"),
jobjExp),NULL);
//-------
char* func = (char*)malloc(len);
JSStringGetUTF8CString(jstrCallback, func, len);
- myCtrls = (xawWidet *)realloc( myCtrls, sizeof(xawWidet)*(objIDc+2) );
+ myCtrls = (xawWidet *)realloc( (void*)myCtrls, sizeof(xawWidet)*(objIDc+2) );
if( myCtrls == NULL )//ポインタが空っぽだったら実行停止。
{
printf( "Memory re-allocation failed!\n" );
exit( 1 );
}
+ myCallBacks = (xawWidet *)realloc( (void*)myCallBacks, sizeof(xawWidet)*(objIDc+2) );
+ if( myCallBacks == NULL )//ポインタが空っぽだったら実行停止。
+ {
+ printf( "Memory re-allocation failed!\n" );
+ exit( 1 );
+ }
char* name = (char*)malloc(sizeof(char)*16);
sprintf(name, "%d", objIDc+2);
myCtrls[objIDc+2].Top = T;//y
myCtrls[objIDc+2].Border = B;
- jsCallbackInfo mycallback;
- mycallback.Context = ctx;
- mycallback.Function = NULL;
+ //jsCallbackInfo mycallback;
+ myCallBacks[objIDc+2].Context = ctx;
if(!JSValueIsUndefined(ctx, JSObjectGetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("Callback"), NULL)))
{
- mycallback.Function = JSObjectGetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("Callback"), NULL);
+ myCallBacks[objIDc+2].Function = JSObjectGetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("Callback"), NULL);
+ }else {
+ myCallBacks[objIDc+2].Function = NULL;
}
+
- createControl(myCtrls[objIDc+2], &mycallback);
+ createControl(myCtrls[objIDc+2], &(myCallBacks[objIDc+2]));
r = JSValueMakeNumber(ctx, objIDc);
JSObjectSetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("ID"), r, kJSPropertyAttributeNone, NULL);
return r;
}
+#pragma GCC optimization_level reset
static JSValueRef jsWindowCreate(
JSContextRef ctx,