fpc/packages/x11/xresource.pp
1999-12-23 19:34:34 +00:00

457 lines
12 KiB
ObjectPascal

unit xresource;
interface
uses xlib;
{***************************************************************
*
* Quark Management
*
***************************************************************}
type
TXrmQuark = Integer;
PXrmQuark = ^TXrmQuark;
TXrmQuarkList = PXrmQuark;
Const NULLQUARK = 0 ;
type TXrmString = Pchar;
const NULLSTRING = 0;
{ find quark for string, create new quark if none already exists }
Function XrmStringToQuark( p1 : pchar ) : TXrmQuark;cdecl;
Function XrmPermStringToQuark( p1 : pchar ) : TXrmQuark;cdecl;
{ find string for quark }
Function XrmQuarkToString( p1 : TXrmQuark) : TXrmString;cdecl;
Function XrmUniqueQuark : TXrmQuark;cdecl;
{
#define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0)
}
{***************************************************************
*
* Conversion of Strings to Lists
*
***************************************************************}
type
TXrmBinding = integer;
TXrmBindingList = ^Integer;
Const XrmBindTightly = 0;
XrmBindLoosely = 1;
procedure XrmStringToQuarkList(
p1 : pchar { string };
p2 : TXrmQuarkList { quarks_return }
);cdecl;
procedure XrmStringToBindingQuarkList(
p1 : pchar { string };
p2 : TXrmBindingList { bindings_return };
p3 : TXrmQuarkList { quarks_return }
);cdecl;
{***************************************************************
*
* Name and Class lists.
*
***************************************************************}
type TXrmName = TXrmQuark;
TXrmNameList = TXrmQuarkList ;
{
#define XrmNameToString(name) XrmQuarkToString(name)
#define XrmStringToName(string) XrmStringToQuark(string)
#define XrmStringToNameList(str, name) XrmStringToQuarkList(str, name)
}
TXrmClass = TXrmQuark;
TXrmClassList = TXrmQuarkList;
{
#define XrmClassToString(c_class) XrmQuarkToString(c_class)
#define XrmStringToClass(c_class) XrmStringToQuark(c_class)
#define XrmStringToClassList(str,c_class) XrmStringToQuarkList(str, c_class)
}
{***************************************************************
*
* Resource Representation Types and Values
*
***************************************************************}
type TXrmRepresentation = TXrmQuark ;
PXrmRepresentation = ^TXrmRepresentation;
{
#define XrmStringToRepresentation(string) XrmStringToQuark(string)
#define XrmRepresentationToString(type) XrmQuarkToString(type)
}
type TXrmValue = record
size : word;
theaddr : TXPointer;
end;
PXrmValue = ^TXrmValue;
TXrmValuePtr = PXrmValue;
{***************************************************************
*
* Resource Manager Functions
*
***************************************************************}
{
typedef struct _XrmHashBucketRec *XrmHashBucket;
typedef XrmHashBucket *XrmHashTable;
typedef XrmHashTable XrmSearchList[];
typedef struct _XrmHashBucketRec *XrmDatabase;
}
Type TXrmHashBucket = pointer;
TXrmHashTable = ^TXrmHashBucket;
TXrmSearchList = ^TXrmHashTable;
TXrmDatabase = pointer;
PXrmDatabase = ^TXrmDatabase;
procedure XrmDestroyDatabase(
p1 : TXrmDatabase { database }
);cdecl;
Procedure XrmQPutResource(
p1 : PXrmDatabase { database };
p2 : TXrmBindingList { bindings };
p3 : TXrmQuarkList { quarks };
p4 : TXrmRepresentation { type };
p5 : PXrmValue { value }
);cdecl;
Procedure XrmPutResource(
p1 : PXrmDatabase { database };
p2 : pchar { specifier };
p3 : pchar { type };
p4 : PXrmValue { value }
);cdecl;
Procedure XrmQPutStringResource(
p1 : PXrmDatabase { database };
p2 : TXrmBindingList { bindings };
p3 : TXrmQuarkList { quarks };
p4 : Pchar { value }
);cdecl;
Procedure XrmPutStringResource(
P1 : PXrmDatabase { database };
p2,p3 : pchar
);cdecl;
Procedure XrmPutLineResource(
p1 : PXrmDatabase { database };
p2 : pchar { line }
);cdecl;
Function XrmQGetResource(
p1 : PXrmDatabase { database };
p2 : TXrmNameList { quark_name };
p3 : TXrmClassList { quark_class };
p4 : PXrmRepresentation { quark_type_return };
p5 : PXrmValue { value_return }
) : Integer;cdecl;
Function XrmGetResource(
p1 : TXrmDatabase { database };
p2 : pchar { str_name };
p3 : pchar { str_class };
p4 : ppchar { str_type_return };
p5 : PXrmValue { value_return }
) : Tbool;cdecl;
Function XrmQGetSearchList(
p1 : TXrmDatabase { database };
p2 : TXrmNameList { names };
p3 : TXrmClassList { classes };
p4 : TXrmSearchList { list_return };
p5 : integer { list_length }
) : Tbool;cdecl;
Function XrmQGetSearchResource(
P1 : TXrmSearchList { list };
p2 : TXrmName { name };
p3 : TXrmClass { class };
p4 : PXrmRepresentation { type_return };
p5 : PXrmValue { value_return }
) : TBool;cdecl;
{***************************************************************
*
* Resource Database Management
*
***************************************************************}
procedure XrmSetDatabase(
p1 : PDisplay { display };
p2 : TXrmDatabase { database }
);cdecl;
Function XrmGetDatabase(
p1 : PDisplay { display }
) : TXrmDatabase;cdecl;
Function XrmGetFileDatabase(
p1 : pchar { filename }
) : TXrmDatabase ;cdecl;
Function XrmCombineFileDatabase(
p1 : pchar { filename };
p2 : PXrmDatabase { target };
p3 : TBool { override }
) : TStatus ;cdecl;
function XrmGetStringDatabase(
p1 : pchar { data } { null terminated string }
) : TXrmDatabase ;cdecl;
Procedure XrmPutFileDatabase(
p1 : TXrmDatabase { database };
p2: pchar { filename }
);cdecl;
Procedure XrmMergeDatabases(
p1 : TXrmDatabase { source_db };
p2 : PXrmDatabase { target_db }
);cdecl;
procedure XrmCombineDatabase(
p1 : TXrmDatabase { source_db };
p2 : PXrmDatabase { target_db };
p3 : TBool { override }
);cdecl;
const
XrmEnumAllLevels = 0;
XrmEnumOneLevel = 1;
{
Function XrmEnumerateDatabase(
XrmDatabase { db };
XrmNameList { name_prefix };
XrmClassList { class_prefix };
int { mode };
Bool (*)(#if NeedNestedPrototypes
XrmDatabase* { db };
XrmBindingList { bindings };
XrmQuarkList { quarks };
XrmRepresentation* { type };
XrmValue* { value };
XPointer { closure }
) { proc };
XPointer { closure }
) : TBool;
}
Function XrmLocaleOfDatabase(
P1 : TXrmDatabase { database }
) : Pchar;cdecl;
{***************************************************************
*
* Command line option mapping to resource entries
*
***************************************************************}
Const
XrmoptionNoArg = 0; { Value is specified in OptionDescRec.value }
XrmoptionIsArg = 1; { Value is the option string itself }
XrmoptionStickyArg = 2; { Value is characters immediately following option }
XrmoptionSepArg = 3; { Value is next argument in argv }
XrmoptionResArg = 4; { Resource and value in next argument in argv }
XrmoptionSkipArg = 5; { Ignore this option and the next argument in argv }
XrmoptionSkipLine = 6; { Ignore this option and the rest of argv }
XrmoptionSkipNArgs = 7; { Ignore this option and the next
OptionDescRes.value arguments in argv }
Type TXrmOptionKind = Integer;
TXrmOptionDescRec = record
option : pchar; { Option abbreviation in argv }
specifier : pchar; { Resource specifier }
argKind : TXrmOptionKind; { Which style of option it is }
value : TXpointer; { Value to provide if XrmoptionNoArg }
end;
PXrmOptionDescRec= ^TXrmOptionDescRec;
TXrmOptionDescList = PXrmOptionDescRec;
Procedure XrmParseCommand(
p1 : TXrmDatabase { database };
p2 : TXrmOptionDescList { table };
p3 : integer { table_count };
p4 : pchar { name };
p5 : Pointer { argc_in_out };
p6 : ppchar { argv_in_out }
);cdecl;
Implementation
Function XrmStringToQuark( p1 : pchar ) : TXrmQuark; cdecl; external;
Function XrmPermStringToQuark( p1 : pchar ) : TXrmQuark; cdecl; external;
Function XrmQuarkToString( p1 : TXrmQuark) : TXrmString; cdecl; external;
Function XrmUniqueQuark : TXrmQuark; cdecl; external;
procedure XrmStringToQuarkList(
p1 : pchar { string };
p2 : TXrmQuarkList { quarks_return }
); cdecl; external;
procedure XrmStringToBindingQuarkList(
p1 : pchar { string };
p2 : TXrmBindingList { bindings_return };
p3 : TXrmQuarkList { quarks_return }
); cdecl; external;
procedure XrmDestroyDatabase(
p1 : TXrmDatabase { database }
); cdecl; external;
Procedure XrmQPutResource(
p1 : PXrmDatabase { database };
p2 : TXrmBindingList { bindings };
p3 : TXrmQuarkList { quarks };
p4 : TXrmRepresentation { type };
p5 : PXrmValue { value }
); cdecl; external;
Procedure XrmPutResource(
p1 : PXrmDatabase { database };
p2 : pchar { specifier };
p3 : pchar { type };
p4 : PXrmValue { value }
); cdecl; external;
Procedure XrmQPutStringResource(
p1 : PXrmDatabase { database };
p2 : TXrmBindingList { bindings };
p3 : TXrmQuarkList { quarks };
p4 : Pchar { value }
); cdecl; external;
procedure XrmPutStringResource(
P1 : PXrmDatabase { database };
p2,p3 : pchar
); cdecl; external;
Procedure XrmPutLineResource(
p1 : PXrmDatabase { database };
p2 : pchar { line }
); cdecl; external;
Function XrmQGetResource(
p1 : PXrmDatabase { database };
p2 : TXrmNameList { quark_name };
p3 : TXrmClassList { quark_class };
p4 : PXrmRepresentation { quark_type_return };
p5 : PXrmValue { value_return }
) : Integer; cdecl; external;
Function XrmGetResource(
p1 : TXrmDatabase { database };
p2 : pchar { str_name };
p3 : pchar { str_class };
p4 : ppchar { str_type_return };
p5 : PXrmValue { value_return }
) : Tbool; cdecl; external;
Function XrmQGetSearchList(
p1 : TXrmDatabase { database };
p2 : TXrmNameList { names };
p3 : TXrmClassList { classes };
p4 : TXrmSearchList { list_return };
p5 : integer { list_length }
) : Tbool; cdecl; external;
Function XrmQGetSearchResource(
P1 : TXrmSearchList { list };
p2 : TXrmName { name };
p3 : TXrmClass { class };
p4 : PXrmRepresentation { type_return };
p5 : PXrmValue { value_return }
) : TBool; cdecl; external;
procedure XrmSetDatabase(
p1 : PDisplay { display };
p2 : TXrmDatabase { database }
); cdecl; external;
Function XrmGetDatabase(
p1 : PDisplay { display }
) : TXrmDatabase; cdecl; external;
Function XrmGetFileDatabase(
p1 : pchar { filename }
) : TXrmDatabase ; cdecl; external;
Function XrmCombineFileDatabase(
p1 : pchar { filename };
p2 : PXrmDatabase { target };
p3 : TBool { override }
) : TStatus ; cdecl; external;
function XrmGetStringDatabase(
p1 : pchar { data } { null terminated string }
) : TXrmDatabase ; cdecl; external;
Procedure XrmPutFileDatabase(
p1 : TXrmDatabase { database };
p2: pchar { filename }
); cdecl; external;
Procedure XrmMergeDatabases(
p1 : TXrmDatabase { source_db };
p2 : PXrmDatabase { target_db }
); cdecl; external;
procedure XrmCombineDatabase(
p1 : TXrmDatabase { source_db };
p2 : PXrmDatabase { target_db };
p3 : TBool { override }
); cdecl; external;
{
Function XrmEnumerateDatabase(
XrmDatabase { db };
XrmNameList { name_prefix };
XrmClassList { class_prefix };
int { mode };
Bool (*)(#if NeedNestedPrototypes
XrmDatabase* { db };
XrmBindingList { bindings };
XrmQuarkList { quarks };
XrmRepresentation* { type };
XrmValue* { value };
XPointer { closure }
) { proc };
XPointer { closure }
) : TBool; cdecl; external;
}
Function XrmLocaleOfDatabase(
P1 : TXrmDatabase { database }
) : Pchar; cdecl; external;
Procedure XrmParseCommand(
p1 : TXrmDatabase { database };
p2 : TXrmOptionDescList { table };
p3 : integer { table_count };
p4 : pchar { name };
p5 : Pointer { argc_in_out };
p6 : ppchar { argv_in_out }
); cdecl; external;
end.