diff options
author | marha <marha@users.sourceforge.net> | 2011-09-12 11:27:51 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-09-12 11:27:51 +0200 |
commit | dafebc5bb70303f0b5baf0b087cf4d9a64b5c7f0 (patch) | |
tree | bdf833cc6a4fc9035411779e10dd9e8478201885 /libXt/src/VarGet.c | |
parent | 0b40f5f4b54453a77f4b09c431f8efc6875da61f (diff) | |
download | vcxsrv-dafebc5bb70303f0b5baf0b087cf4d9a64b5c7f0.tar.gz vcxsrv-dafebc5bb70303f0b5baf0b087cf4d9a64b5c7f0.tar.bz2 vcxsrv-dafebc5bb70303f0b5baf0b087cf4d9a64b5c7f0.zip |
Synchronised line endinge with release branch
Diffstat (limited to 'libXt/src/VarGet.c')
-rw-r--r-- | libXt/src/VarGet.c | 626 |
1 files changed, 313 insertions, 313 deletions
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 <config.h>
-#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 <config.h> +#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); + } +} |