|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Motif
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Copyright (c) 1987-2012, The Open Group. All rights reserved.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are free software; you can
|
|
Packit |
b099d7 |
* redistribute them and/or modify them under the terms of the GNU
|
|
Packit |
b099d7 |
* Lesser General Public License as published by the Free Software
|
|
Packit |
b099d7 |
* Foundation; either version 2 of the License, or (at your option)
|
|
Packit |
b099d7 |
* any later version.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are distributed in the hope that
|
|
Packit |
b099d7 |
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
Packit |
b099d7 |
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
Packit |
b099d7 |
* PURPOSE. See the GNU Lesser General Public License for more
|
|
Packit |
b099d7 |
* details.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
b099d7 |
* License along with these librararies and programs; if not, write
|
|
Packit |
b099d7 |
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
Packit |
b099d7 |
* Floor, Boston, MA 02110-1301 USA
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* HISTORY
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
#ifdef HAVE_CONFIG_H
|
|
Packit |
b099d7 |
#include <config.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef REV_INFO
|
|
Packit |
b099d7 |
#ifndef lint
|
|
Packit |
b099d7 |
static char rcsid[] = "$XConsortium: Mrmwread.c /main/11 1996/11/13 14:07:06 drk $"
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
*++
|
|
Packit |
b099d7 |
* FACILITY:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* UIL Resource Manager (URM):
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* ABSTRACT:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* This module contains the widget read routines. All these routines
|
|
Packit |
b099d7 |
* read a widget from a hierarchy or IDB file into a resource context.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*--
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* INCLUDE FILES
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <Mrm/MrmAppl.h>
|
|
Packit |
b099d7 |
#include <Mrm/Mrm.h>
|
|
Packit |
b099d7 |
#include "MrmMsgI.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* TABLE OF CONTENTS
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* UrmHGetWidget Read indexed widget from hierarchy
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* UrmGetIndexedWidget Read indexed widget from IDB file
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* UrmGetRIDWidget Read RID widget from IDB file
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
*++
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* PROCEDURE DESCRIPTION:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* UrmHGetWidget searches the database hierarchy for a public
|
|
Packit |
b099d7 |
* (EXPORTed) widget given its index. It returns the RGM widget record
|
|
Packit |
b099d7 |
* in a resource context.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* hierarchy_id id of an open URM database hierarchy
|
|
Packit |
b099d7 |
* index index of the desired widget
|
|
Packit |
b099d7 |
* context_id widget context in which to return record read in
|
|
Packit |
b099d7 |
* file_id_return to return IDB file in which widget was found
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* IMPLICIT INPUTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* IMPLICIT OUTPUTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FUNCTION VALUE:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* MrmSUCCESS operation succeeded
|
|
Packit |
b099d7 |
* MrmNOT_FOUND widget not found
|
|
Packit |
b099d7 |
* MrmBAD_HIERARCHY invalid URM file hierarchy
|
|
Packit |
b099d7 |
* MrmBAD_WIDGET_REC invalid widget record in context
|
|
Packit |
b099d7 |
* Others see UrmGetIndexedWidget
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SIDE EFFECTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*--
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Cardinal
|
|
Packit |
b099d7 |
UrmHGetWidget (MrmHierarchy hierarchy_id,
|
|
Packit |
b099d7 |
String index,
|
|
Packit |
b099d7 |
URMResourceContextPtr context_id,
|
|
Packit |
b099d7 |
IDBFile *file_id_return)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Local variables
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
Cardinal result ; /* function results */
|
|
Packit |
b099d7 |
RGMWidgetRecordPtr widgetrec ; /* widget record in context */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Get the widget
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
result = UrmHGetIndexedResource
|
|
Packit |
b099d7 |
(hierarchy_id, index, URMgWidget, URMtNul, context_id, file_id_return) ;
|
|
Packit |
b099d7 |
if ( result != MrmSUCCESS ) return result ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Validate the widget record in the context
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
widgetrec = (RGMWidgetRecordPtr) UrmRCBuffer (context_id) ;
|
|
Packit |
b099d7 |
if ( UrmWRValid(widgetrec) )
|
|
Packit |
b099d7 |
return MrmSUCCESS ;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if ( (*file_id_return)->byte_swapped ) swapbytes(widgetrec->validation);
|
|
Packit |
b099d7 |
if ( UrmWRValid(widgetrec) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Urm__SwapRGMWidgetRecord(widgetrec);
|
|
Packit |
b099d7 |
return MrmSUCCESS ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return Urm__UT_Error("UrmHGetIndexedWidget", _MrmMMsg_0026,
|
|
Packit |
b099d7 |
NULL, context_id, MrmBAD_WIDGET_REC) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
*++
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* PROCEDURE DESCRIPTION:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* UrmGetIndexedWidget searches a single database file for a widget
|
|
Packit |
b099d7 |
* given its index (i.e. it gets a public widget from a single file).
|
|
Packit |
b099d7 |
* It returns the RGM widget record.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* file_id id of an open URM database file (IDB file)
|
|
Packit |
b099d7 |
* index index of the desired widget
|
|
Packit |
b099d7 |
* context_id widget context in which to return record read in
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* IMPLICIT INPUTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* IMPLICIT OUTPUTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FUNCTION VALUE:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* MrmSUCCESS operation succeeded
|
|
Packit |
b099d7 |
* MrmBAD_CONTEXT invalid resource context
|
|
Packit |
b099d7 |
* Other See UrmIdbGetIndexedResource
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SIDE EFFECTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*--
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Cardinal
|
|
Packit |
b099d7 |
UrmGetIndexedWidget (IDBFile file_id,
|
|
Packit |
b099d7 |
String index,
|
|
Packit |
b099d7 |
URMResourceContextPtr context_id)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Local variables
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
Cardinal result ; /* function results */
|
|
Packit |
b099d7 |
RGMWidgetRecordPtr widgetrec ; /* widget record in context */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Validate context, then attempt the read.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ( ! UrmRCValid(context_id) )
|
|
Packit |
b099d7 |
return Urm__UT_Error ("UrmGetIndexedWidget", _MrmMMsg_0043,
|
|
Packit |
b099d7 |
file_id, NULL, MrmBAD_CONTEXT) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
result =
|
|
Packit |
b099d7 |
UrmIdbGetIndexedResource (file_id, index, URMgWidget, URMtNul, context_id) ;
|
|
Packit |
b099d7 |
if ( result != MrmSUCCESS ) return result ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Validate the widget record in the context
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
widgetrec = (RGMWidgetRecordPtr) UrmRCBuffer (context_id) ;
|
|
Packit |
b099d7 |
if ( UrmWRValid(widgetrec) )
|
|
Packit |
b099d7 |
return MrmSUCCESS ;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if ( file_id->byte_swapped ) swapbytes(widgetrec->validation);
|
|
Packit |
b099d7 |
if ( UrmWRValid(widgetrec) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Urm__SwapRGMWidgetRecord(widgetrec);
|
|
Packit |
b099d7 |
return MrmSUCCESS ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return Urm__UT_Error("UrmGetIndexedWidget", _MrmMMsg_0026,
|
|
Packit |
b099d7 |
NULL, context_id, MrmBAD_WIDGET_REC) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
*++
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* PROCEDURE DESCRIPTION:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* UrmGetRIDWidget retrieves a widget from a single database file
|
|
Packit |
b099d7 |
* given its resource id as an accessor. It returns the widget record.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* file_id id of an open URM database file (IDB file)
|
|
Packit |
b099d7 |
* resource_id resource id for widget
|
|
Packit |
b099d7 |
* context_id widget context in which to return record read in
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* IMPLICIT INPUTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* IMPLICIT OUTPUTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FUNCTION VALUE:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* MrmSUCCESS operation succeeded
|
|
Packit |
b099d7 |
* MrmNOT_FOUND widget not found
|
|
Packit |
b099d7 |
* MrmFAILURE operation failed, further reason not given.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SIDE EFFECTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*--
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Cardinal
|
|
Packit |
b099d7 |
UrmGetRIDWidget (IDBFile file_id,
|
|
Packit |
b099d7 |
MrmResource_id resource_id,
|
|
Packit |
b099d7 |
URMResourceContextPtr context_id)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Local variables
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
Cardinal result ; /* function results */
|
|
Packit |
b099d7 |
RGMWidgetRecordPtr widgetrec ; /* widget record in context */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Validate context, then attempt the read.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ( ! UrmRCValid(context_id) )
|
|
Packit |
b099d7 |
return Urm__UT_Error ("UrmGetRIDWidget", _MrmMMsg_0043,
|
|
Packit |
b099d7 |
file_id, NULL, MrmBAD_CONTEXT) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
result = UrmIdbGetRIDResource (file_id, resource_id,
|
|
Packit |
b099d7 |
URMgWidget, URMgNul, context_id) ;
|
|
Packit |
b099d7 |
if ( result != MrmSUCCESS ) return result ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Validate the widget record in the context
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
widgetrec = (RGMWidgetRecordPtr) UrmRCBuffer (context_id) ;
|
|
Packit |
b099d7 |
if ( UrmWRValid(widgetrec) )
|
|
Packit |
b099d7 |
return MrmSUCCESS ;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if ( file_id->byte_swapped ) swapbytes(widgetrec->validation);
|
|
Packit |
b099d7 |
if ( UrmWRValid(widgetrec) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Urm__SwapRGMWidgetRecord(widgetrec);
|
|
Packit |
b099d7 |
return MrmSUCCESS ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return Urm__UT_Error("UrmGetRIDWidget", _MrmMMsg_0026,
|
|
Packit |
b099d7 |
NULL, context_id, MrmBAD_WIDGET_REC) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|