From dafebc5bb70303f0b5baf0b087cf4d9a64b5c7f0 Mon Sep 17 00:00:00 2001 From: marha Date: Mon, 12 Sep 2011 11:27:51 +0200 Subject: Synchronised line endinge with release branch --- libXt/src/VarGet.c | 626 ++++++++++++++++++++++++++--------------------------- 1 file changed, 313 insertions(+), 313 deletions(-) (limited to 'libXt/src/VarGet.c') diff --git a/libXt/src/VarGet.c b/libXt/src/VarGet.c index 4a3aa829c..7b4cea65d 100644 --- a/libXt/src/VarGet.c +++ b/libXt/src/VarGet.c @@ -1,313 +1,313 @@ -/* - -Copyright (c) 1993, Oracle and/or its affiliates. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next -paragraph) shall be included in all copies or substantial portions of the -Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -*/ - -/* - -Copyright 1985, 1986, 1987, 1988, 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif -#include "IntrinsicI.h" -#include "VarargsI.h" -#include "StringDefs.h" - -static String XtNxtGetTypedArg = "xtGetTypedArg"; - -void -XtVaGetSubresources( - Widget widget, - XtPointer base, - _Xconst char* name, - _Xconst char* class, - XtResourceList resources, - Cardinal num_resources, - ...) -{ - va_list var; - XtTypedArgList args; - Cardinal num_args; - int total_count, typed_count; - WIDGET_TO_APPCON(widget); - - LOCK_APP(app); - va_start(var, num_resources); - _XtCountVaList(var, &total_count, &typed_count); - va_end(var); - - va_start(var, num_resources); - - _XtVaToTypedArgList(var, total_count, &args, &num_args); - - _XtGetSubresources(widget, base, name, class, resources, num_resources, - NULL, 0, args, num_args); - - if (num_args != 0) { - XtFree((XtPointer)args); - } - - va_end(var); - UNLOCK_APP(app); -} - - -void -XtVaGetApplicationResources(Widget widget, XtPointer base, XtResourceList resources, Cardinal num_resources, ...) -{ - va_list var; - XtTypedArgList args; - Cardinal num_args; - int total_count, typed_count; - WIDGET_TO_APPCON(widget); - - LOCK_APP(app); - va_start(var,num_resources); - _XtCountVaList(var, &total_count, &typed_count); - va_end(var); - - va_start(var,num_resources); - - _XtVaToTypedArgList(var, total_count, &args, &num_args); - - _XtGetApplicationResources(widget, base, resources, num_resources, - NULL, 0, args, num_args); - - if (num_args != 0) { - XtFree((XtPointer)args); - } - - va_end(var); - UNLOCK_APP(app); -} - - -static void -GetTypedArg( - Widget widget, - XtTypedArgList typed_arg, - XtResourceList resources, - Cardinal num_resources) -{ - String from_type = NULL; - Cardinal from_size = 0; - XrmValue from_val, to_val; - register Cardinal i; - Arg arg; - XtPointer value; - - /* note we presume that the XtResourceList to be un-compiled */ - - for (i = 0; i < num_resources; i++) { - if (StringToName(typed_arg->name) == StringToName(resources[i].resource_name)) { - from_type = resources[i].resource_type; - from_size = resources[i].resource_size; - break; - } - } - - if (i == num_resources) { - XtAppWarningMsg(XtWidgetToApplicationContext(widget), - "unknownType", XtNxtGetTypedArg, XtCXtToolkitError, - "Unable to find type of resource for conversion", - (String *)NULL, (Cardinal *)NULL); - return; - } - - value = ALLOCATE_LOCAL(from_size); - if (value == NULL) _XtAllocError(NULL); - XtSetArg(arg, typed_arg->name, value); - XtGetValues(widget, &arg, 1); - - from_val.size = from_size; - from_val.addr = (XPointer)value; - to_val.addr = (XPointer)typed_arg->value; - to_val.size = typed_arg->size; - - if (!XtConvertAndStore(widget, from_type, &from_val, - typed_arg->type, &to_val)) { - if (to_val.size > (unsigned) typed_arg->size) { - String params[2]; - Cardinal num_params = 2; - params[0] = typed_arg->type; - params[1] = XtName(widget); - XtAppWarningMsg(XtWidgetToApplicationContext(widget), - "insufficientSpace", XtNxtGetTypedArg, XtCXtToolkitError, - "Insufficient space for converted type '%s' in widget '%s'", - params, &num_params); - } - else { - String params[3]; - Cardinal num_params = 3; - params[0] = from_type; - params[1] = typed_arg->type; - params[2] = XtName(widget); - XtAppWarningMsg(XtWidgetToApplicationContext(widget), - "conversionFailed", XtNxtGetTypedArg, XtCXtToolkitError, - "Type conversion (%s to %s) failed for widget '%s'", - params, &num_params); - } - } - DEALLOCATE_LOCAL(value); -} - -static int -GetNestedArg( - Widget widget, - XtTypedArgList avlist, - ArgList args, - XtResourceList resources, - Cardinal num_resources) -{ - int count = 0; - - for (; avlist->name != NULL; avlist++) { - if (avlist->type != NULL) { - GetTypedArg(widget, avlist, resources, num_resources); - } else if(strcmp(avlist->name, XtVaNestedList) == 0) { - count += GetNestedArg(widget, (XtTypedArgList)avlist->value, - args, resources, num_resources); - } else { - (args+count)->name = avlist->name; - (args+count)->value = avlist->value; - ++count; - } - } - - return(count); -} - -void -XtVaGetValues(Widget widget, ...) -{ - va_list var; - String attr; - ArgList args; - XtTypedArg typed_arg; - XtResourceList resources = (XtResourceList)NULL; - Cardinal num_resources; - int count, total_count, typed_count; - WIDGET_TO_APPCON(widget); - - LOCK_APP(app); - va_start(var,widget); - - _XtCountVaList(var, &total_count, &typed_count); - - if (total_count != typed_count) { - args = (ArgList)__XtMalloc((unsigned)((total_count - typed_count) - * sizeof(Arg))); - } - else args = NULL; /* for lint; really unused */ - va_end(var); - - va_start(var,widget); - for(attr = va_arg(var, String), count = 0 ; attr != NULL; - attr = va_arg(var, String)) { - if (strcmp(attr, XtVaTypedArg) == 0) { - typed_arg.name = va_arg(var, String); - typed_arg.type = va_arg(var, String); - typed_arg.value = va_arg(var, XtArgVal); - typed_arg.size = va_arg(var, int); - - if (resources == NULL) { - XtGetResourceList(XtClass(widget), &resources,&num_resources); - } - - GetTypedArg(widget, &typed_arg, resources, num_resources); - } else if (strcmp(attr, XtVaNestedList) == 0) { - if (resources == NULL) { - XtGetResourceList(XtClass(widget),&resources, &num_resources); - } - - count += GetNestedArg(widget, va_arg(var, XtTypedArgList), - (args+count), resources, num_resources); - } else { - args[count].name = attr; - args[count].value = va_arg(var, XtArgVal); - count ++; - } - } - va_end(var); - - if (resources != (XtResourceList)NULL) { - XtFree((XtPointer)resources); - } - - if (total_count != typed_count) { - XtGetValues(widget, args, count); - XtFree((XtPointer)args); - } - UNLOCK_APP(app); -} - -void -XtVaGetSubvalues(XtPointer base,XtResourceList resources, Cardinal num_resources, ...) -{ - va_list var; - ArgList args; - Cardinal num_args; - int total_count, typed_count; - - va_start(var,num_resources); - - _XtCountVaList(var, &total_count, &typed_count); - - if (typed_count != 0) { - XtWarning("XtVaTypedArg is an invalid argument to XtVaGetSubvalues()\n"); - } - va_end(var); - - va_start(var,num_resources); - _XtVaToArgList((Widget)NULL, var, total_count, &args, &num_args); - va_end(var); - - XtGetSubvalues(base, resources, num_resources, args, num_args); - - if (num_args != 0) { - XtFree((XtPointer)args); - } -} +/* + +Copyright (c) 1993, Oracle and/or its affiliates. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +*/ + +/* + +Copyright 1985, 1986, 1987, 1988, 1989, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +*/ + +#ifdef HAVE_CONFIG_H +#include +#endif +#include "IntrinsicI.h" +#include "VarargsI.h" +#include "StringDefs.h" + +static String XtNxtGetTypedArg = "xtGetTypedArg"; + +void +XtVaGetSubresources( + Widget widget, + XtPointer base, + _Xconst char* name, + _Xconst char* class, + XtResourceList resources, + Cardinal num_resources, + ...) +{ + va_list var; + XtTypedArgList args; + Cardinal num_args; + int total_count, typed_count; + WIDGET_TO_APPCON(widget); + + LOCK_APP(app); + va_start(var, num_resources); + _XtCountVaList(var, &total_count, &typed_count); + va_end(var); + + va_start(var, num_resources); + + _XtVaToTypedArgList(var, total_count, &args, &num_args); + + _XtGetSubresources(widget, base, name, class, resources, num_resources, + NULL, 0, args, num_args); + + if (num_args != 0) { + XtFree((XtPointer)args); + } + + va_end(var); + UNLOCK_APP(app); +} + + +void +XtVaGetApplicationResources(Widget widget, XtPointer base, XtResourceList resources, Cardinal num_resources, ...) +{ + va_list var; + XtTypedArgList args; + Cardinal num_args; + int total_count, typed_count; + WIDGET_TO_APPCON(widget); + + LOCK_APP(app); + va_start(var,num_resources); + _XtCountVaList(var, &total_count, &typed_count); + va_end(var); + + va_start(var,num_resources); + + _XtVaToTypedArgList(var, total_count, &args, &num_args); + + _XtGetApplicationResources(widget, base, resources, num_resources, + NULL, 0, args, num_args); + + if (num_args != 0) { + XtFree((XtPointer)args); + } + + va_end(var); + UNLOCK_APP(app); +} + + +static void +GetTypedArg( + Widget widget, + XtTypedArgList typed_arg, + XtResourceList resources, + Cardinal num_resources) +{ + String from_type = NULL; + Cardinal from_size = 0; + XrmValue from_val, to_val; + register Cardinal i; + Arg arg; + XtPointer value; + + /* note we presume that the XtResourceList to be un-compiled */ + + for (i = 0; i < num_resources; i++) { + if (StringToName(typed_arg->name) == StringToName(resources[i].resource_name)) { + from_type = resources[i].resource_type; + from_size = resources[i].resource_size; + break; + } + } + + if (i == num_resources) { + XtAppWarningMsg(XtWidgetToApplicationContext(widget), + "unknownType", XtNxtGetTypedArg, XtCXtToolkitError, + "Unable to find type of resource for conversion", + (String *)NULL, (Cardinal *)NULL); + return; + } + + value = ALLOCATE_LOCAL(from_size); + if (value == NULL) _XtAllocError(NULL); + XtSetArg(arg, typed_arg->name, value); + XtGetValues(widget, &arg, 1); + + from_val.size = from_size; + from_val.addr = (XPointer)value; + to_val.addr = (XPointer)typed_arg->value; + to_val.size = typed_arg->size; + + if (!XtConvertAndStore(widget, from_type, &from_val, + typed_arg->type, &to_val)) { + if (to_val.size > (unsigned) typed_arg->size) { + String params[2]; + Cardinal num_params = 2; + params[0] = typed_arg->type; + params[1] = XtName(widget); + XtAppWarningMsg(XtWidgetToApplicationContext(widget), + "insufficientSpace", XtNxtGetTypedArg, XtCXtToolkitError, + "Insufficient space for converted type '%s' in widget '%s'", + params, &num_params); + } + else { + String params[3]; + Cardinal num_params = 3; + params[0] = from_type; + params[1] = typed_arg->type; + params[2] = XtName(widget); + XtAppWarningMsg(XtWidgetToApplicationContext(widget), + "conversionFailed", XtNxtGetTypedArg, XtCXtToolkitError, + "Type conversion (%s to %s) failed for widget '%s'", + params, &num_params); + } + } + DEALLOCATE_LOCAL(value); +} + +static int +GetNestedArg( + Widget widget, + XtTypedArgList avlist, + ArgList args, + XtResourceList resources, + Cardinal num_resources) +{ + int count = 0; + + for (; avlist->name != NULL; avlist++) { + if (avlist->type != NULL) { + GetTypedArg(widget, avlist, resources, num_resources); + } else if(strcmp(avlist->name, XtVaNestedList) == 0) { + count += GetNestedArg(widget, (XtTypedArgList)avlist->value, + args, resources, num_resources); + } else { + (args+count)->name = avlist->name; + (args+count)->value = avlist->value; + ++count; + } + } + + return(count); +} + +void +XtVaGetValues(Widget widget, ...) +{ + va_list var; + String attr; + ArgList args; + XtTypedArg typed_arg; + XtResourceList resources = (XtResourceList)NULL; + Cardinal num_resources; + int count, total_count, typed_count; + WIDGET_TO_APPCON(widget); + + LOCK_APP(app); + va_start(var,widget); + + _XtCountVaList(var, &total_count, &typed_count); + + if (total_count != typed_count) { + args = (ArgList)__XtMalloc((unsigned)((total_count - typed_count) + * sizeof(Arg))); + } + else args = NULL; /* for lint; really unused */ + va_end(var); + + va_start(var,widget); + for(attr = va_arg(var, String), count = 0 ; attr != NULL; + attr = va_arg(var, String)) { + if (strcmp(attr, XtVaTypedArg) == 0) { + typed_arg.name = va_arg(var, String); + typed_arg.type = va_arg(var, String); + typed_arg.value = va_arg(var, XtArgVal); + typed_arg.size = va_arg(var, int); + + if (resources == NULL) { + XtGetResourceList(XtClass(widget), &resources,&num_resources); + } + + GetTypedArg(widget, &typed_arg, resources, num_resources); + } else if (strcmp(attr, XtVaNestedList) == 0) { + if (resources == NULL) { + XtGetResourceList(XtClass(widget),&resources, &num_resources); + } + + count += GetNestedArg(widget, va_arg(var, XtTypedArgList), + (args+count), resources, num_resources); + } else { + args[count].name = attr; + args[count].value = va_arg(var, XtArgVal); + count ++; + } + } + va_end(var); + + if (resources != (XtResourceList)NULL) { + XtFree((XtPointer)resources); + } + + if (total_count != typed_count) { + XtGetValues(widget, args, count); + XtFree((XtPointer)args); + } + UNLOCK_APP(app); +} + +void +XtVaGetSubvalues(XtPointer base,XtResourceList resources, Cardinal num_resources, ...) +{ + va_list var; + ArgList args; + Cardinal num_args; + int total_count, typed_count; + + va_start(var,num_resources); + + _XtCountVaList(var, &total_count, &typed_count); + + if (typed_count != 0) { + XtWarning("XtVaTypedArg is an invalid argument to XtVaGetSubvalues()\n"); + } + va_end(var); + + va_start(var,num_resources); + _XtVaToArgList((Widget)NULL, var, total_count, &args, &num_args); + va_end(var); + + XtGetSubvalues(base, resources, num_resources, args, num_args); + + if (num_args != 0) { + XtFree((XtPointer)args); + } +} -- cgit v1.2.3