summaryrefslogtreecommitdiff
path: root/packages/libxml/src/xmlxsd.pas
diff options
context:
space:
mode:
authorivost <ivost@3ad0048d-3df7-0310-abae-a5850022a9f2>2008-08-25 22:19:48 +0000
committerivost <ivost@3ad0048d-3df7-0310-abae-a5850022a9f2>2008-08-25 22:19:48 +0000
commit24495df6de9f393cabe7b746f643301b32cba5bd (patch)
treec93a8b70ef53d2bf664efb17438afee352e418aa /packages/libxml/src/xmlxsd.pas
parentde5338300b5d8aa8b221503c8fc09008228fe050 (diff)
downloadfpc-24495df6de9f393cabe7b746f643301b32cba5bd.tar.gz
* fixed bug in libxml2 tree.inc
* added new xsd helper functions git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11655 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/libxml/src/xmlxsd.pas')
-rw-r--r--packages/libxml/src/xmlxsd.pas293
1 files changed, 293 insertions, 0 deletions
diff --git a/packages/libxml/src/xmlxsd.pas b/packages/libxml/src/xmlxsd.pas
index d133fcd2b9..f42b7c324a 100644
--- a/packages/libxml/src/xmlxsd.pas
+++ b/packages/libxml/src/xmlxsd.pas
@@ -6,10 +6,13 @@ unit xmlxsd;
interface
uses
+ libxml2,
SysUtils;
+{ Format functions }
function xsdFormatBoolean(Value: Boolean): String;
function xsdFormatDate(Year, Month, Day: Longword): String;
+function xsdFormatTime(Daytime: Longword): String;
function xsdFormatDateTime(Year, Month, Day, Daytime: Longword): String;
function xsdFormatDecimal(Value: Extended; Precision: Integer = 4; Digits: Integer = 1): String;
function xsdFormatDouble(Value: Double): String;
@@ -23,6 +26,40 @@ function xsdFormatUnsignedShort(Value: Word): String;
function xsdFormatUnsignedInt(Value: Longword): String;
function xsdFormatUnsignedLong(Value: QWord): String;
+{ Node creation functions }
+function xsdNewChildBoolean(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Boolean): xmlNodePtr;
+function xsdNewChildDate(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Year, Month, Day: Longword): xmlNodePtr;
+function xsdNewChildTime(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Daytime: Longword): xmlNodePtr;
+function xsdNewChildDateTime(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Year, Month, Day, Daytime: Longword): xmlNodePtr;
+function xsdNewChildDecimal(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Extended; Precision: Integer = 4; Digits: Integer = 1): xmlNodePtr;
+function xsdNewChildDouble(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Double): xmlNodePtr;
+function xsdNewChildFloat(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Single): xmlNodePtr;
+function xsdNewChildByte(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Shortint): xmlNodePtr;
+function xsdNewChildShort(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Smallint): xmlNodePtr;
+function xsdNewChildInt(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Longint): xmlNodePtr;
+function xsdNewChildLong(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Int64): xmlNodePtr;
+function xsdNewChildUnsignedByte(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Byte): xmlNodePtr;
+function xsdNewChildUnsignedShort(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Word): xmlNodePtr;
+function xsdNewChildUnsignedInt(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Longword): xmlNodePtr;
+function xsdNewChildUnsignedLong(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: QWord): xmlNodePtr;
+
+{ Property creation functions }
+function xsdNewPropBoolean(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Boolean): xmlAttrPtr;
+function xsdNewPropDate(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Year, Month, Day: Longword): xmlAttrPtr;
+function xsdNewPropTime(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Daytime: Longword): xmlAttrPtr;
+function xsdNewPropDateTime(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Year, Month, Day, Daytime: Longword): xmlAttrPtr;
+function xsdNewPropDecimal(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Extended; Precision: Integer = 4; Digits: Integer = 1): xmlAttrPtr;
+function xsdNewPropDouble(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Double): xmlAttrPtr;
+function xsdNewPropFloat(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Single): xmlAttrPtr;
+function xsdNewPropByte(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Shortint): xmlAttrPtr;
+function xsdNewPropShort(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Smallint): xmlAttrPtr;
+function xsdNewPropInt(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Longint): xmlAttrPtr;
+function xsdNewPropLong(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Int64): xmlAttrPtr;
+function xsdNewPropUnsignedByte(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Byte): xmlAttrPtr;
+function xsdNewPropUnsignedShort(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Word): xmlAttrPtr;
+function xsdNewPropUnsignedInt(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Longword): xmlAttrPtr;
+function xsdNewPropUnsignedLong(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: QWord): xmlAttrPtr;
+
implementation
function xsdFormatBoolean(Value: Boolean): String;
@@ -38,6 +75,20 @@ begin
Result := Format('%4.4d-%2.2d-%2.2dZ', [Year, Month, Day]);
end;
+function xsdFormatTime(Daytime: Longword): String;
+var
+ Hour, Minute, Second: Longword;
+begin
+ Daytime := Daytime div 1000; // ms to sec
+ Second := Daytime mod 60; // extract sec
+ Daytime := Daytime div 60; // sec to min
+ Minute := Daytime mod 60; // extract min
+ Daytime := Daytime div 60; // min to hour
+ Hour := Daytime mod 60; // extract hour
+
+ Result := Format('%2.2d:%2.2d:%2.2dZ', [Hour, Minute, Second]);
+end;
+
function xsdFormatDateTime(Year, Month, Day, Daytime: Longword): String;
var
Hour, Minute, Second: Longword;
@@ -107,4 +158,246 @@ begin
Result := IntToStr(Value);
end;
+function xsdNewChildBoolean(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Boolean): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatBoolean(Value);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildTime(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Daytime: Longword): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatTime(Daytime);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildDate(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Year, Month, Day: Longword): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatDate(Year, Month, Day);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildDateTime(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Year, Month, Day, Daytime: Longword): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatDateTime(Year, Month, Day, Daytime);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildDecimal(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Extended; Precision: Integer; Digits: Integer): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatDecimal(Value, Precision, Digits);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildDouble(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Double): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatDouble(Value);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildFloat(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Single): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatFloat(Value);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildByte(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Shortint): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatByte(Value);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildShort(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Smallint): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatShort(Value);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildInt(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Longint): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatInt(Value);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildLong(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Int64): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatLong(Value);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildUnsignedByte(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Byte): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatUnsignedByte(Value);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildUnsignedShort(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Word): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatUnsignedShort(Value);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildUnsignedInt(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Longword): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatUnsignedInt(Value);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+function xsdNewChildUnsignedLong(parent: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: QWord): xmlNodePtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatUnsignedLong(Value);
+ Result := xmlNewChild(parent, ns, name, PChar(Tmp));
+end;
+
+
+
+function xsdNewPropBoolean(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Boolean): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatBoolean(Value);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropTime(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Daytime: Longword): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatTime(Daytime);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropDate(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Year, Month, Day: Longword): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatDate(Year, Month, Day);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropDateTime(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Year, Month, Day, Daytime: Longword): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatDateTime(Year, Month, Day, Daytime);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropDecimal(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Extended; Precision: Integer; Digits: Integer): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatDecimal(Value, Precision, Digits);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropDouble(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Double): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatDouble(Value);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropFloat(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Single): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatFloat(Value);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropByte(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Shortint): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatByte(Value);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropShort(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Smallint): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatShort(Value);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropInt(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Longint): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatInt(Value);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropLong(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Int64): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatLong(Value);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropUnsignedByte(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Byte): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatUnsignedByte(Value);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropUnsignedShort(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Word): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatUnsignedShort(Value);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropUnsignedInt(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: Longword): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatUnsignedInt(Value);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
+function xsdNewPropUnsignedLong(node: xmlNodePtr; ns: xmlNsPtr; name: xmlCharPtr; Value: QWord): xmlAttrPtr;
+var
+ Tmp: String;
+begin
+ Tmp := xsdFormatUnsignedLong(Value);
+ Result := xmlNewNsProp(node, ns, name, PChar(Tmp));
+end;
+
end. \ No newline at end of file