summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Murchison <murch@andrew.cmu.edu>2016-09-27 13:02:27 -0400
committerKen Murchison <murch@andrew.cmu.edu>2016-11-12 08:08:34 -0500
commitf984d6fdb1e093d961132d5089dc6b0cacf5a062 (patch)
tree7c1ee64ec6654e6f635cd8c9b6c8acf031a35ea9
parentf3648b74a5d780bd7a1980529d35d52127225943 (diff)
downloadlibical-git-f984d6fdb1e093d961132d5089dc6b0cacf5a062.tar.gz
initial VPATCH implementation
-rw-r--r--design-data/components.txt2
-rw-r--r--design-data/parameters.csv4
-rw-r--r--design-data/params-in-prop.txt5
-rw-r--r--design-data/properties.csv6
-rw-r--r--design-data/restrictions.csv14
-rw-r--r--src/libical/icalcomponent.c15
-rw-r--r--src/libical/icalcomponent.h4
-rw-r--r--src/libical/icalenums.h4
8 files changed, 52 insertions, 2 deletions
diff --git a/design-data/components.txt b/design-data/components.txt
index 2d7603b0..09108903 100644
--- a/design-data/components.txt
+++ b/design-data/components.txt
@@ -9,6 +9,7 @@ VEVENT
VFREEBUSY
VJOURNAL
VQUERY
+VPATCH
VPOLL
VSCHEDULE
VTIMEZONE
@@ -22,6 +23,7 @@ XDISPLAYALARM
XEMAILALARM
XLICINVALID
XMIMEPART
+XPATCH
XPROCEDUREALARM
XSTANDARDTIME
XVOTE
diff --git a/design-data/parameters.csv b/design-data/parameters.csv
index d4cd8ba9..cfa82c78 100644
--- a/design-data/parameters.csv
+++ b/design-data/parameters.csv
@@ -60,6 +60,8 @@
"FEATURE","48","icalparameter_feature",X=22100;AUDIO;CHAT;FEED;MODERATOR;PHONE;SCREEN;VIDEO;NONE=22199",
"LABEL","49","const char*",
"EMAIL","50","const char*",
+"#VPATCH Extension Parameters","draft-daboo-icalendar-vpatch"
+"PATCH-ACTION","51","icalparameter_patchaction",X=22200;CREATE;BYNAME;BYVALUE;BYPARAM;NONE=22299",
"#NOTE for updaters. Preserve the icalparameter_kind Enum values to aid forward compatibility"
"# New Enum values for an existing icalparameter_kind should be inserted before the corresponding NONE value"
-"# New icalparamter_kind types should start their Enum value after the highest NONE value (currently 22199)"
+"# New icalparamter_kind types should start their Enum value after the highest NONE value (currently 22299)"
diff --git a/design-data/params-in-prop.txt b/design-data/params-in-prop.txt
index 29d9b47b..d455e231 100644
--- a/design-data/params-in-prop.txt
+++ b/design-data/params-in-prop.txt
@@ -72,3 +72,8 @@ SOURCE X
COLOR X
IMAGE ALTREP DISPLAY ENCODING FMTTYPE VALUE X
CONFERENCE FEATURE LABEL VALUE X
+PATCH-VERSION X
+PATCH-ORDER X
+PATCH-TARGET X
+PATCH-DELETE X
+PATCH-PARAMETER ANY
diff --git a/design-data/properties.csv b/design-data/properties.csv
index 7d7bf56a..e0ee79e7 100644
--- a/design-data/properties.csv
+++ b/design-data/properties.csv
@@ -136,4 +136,10 @@
"COLOR","118","TEXT","TEXT"
"IMAGE","119","ATTACH","URI"
"CONFERENCE","120","URI","URI"
+"#VPATCH Extension Properties", "draft-daboo_icalendar-vpatch Section 4",
+"PATCH-VERSION","121","TEXT","TEXT"
+"PATCH-ORDER","122","INTEGER","INTEGER"
+"PATCH-TARGET","123","TEXT","TEXT"
+"PATCH-DELETE","124","TEXT","TEXT"
+"PATCH-PARAMETER","125","TEXT","TEXT"
"#NOTE for updaters. Preserve the icalproperty_kind Enum values to aid forward compatibility"
diff --git a/design-data/restrictions.csv b/design-data/restrictions.csv
index 1fe121b9..8ac93764 100644
--- a/design-data/restrictions.csv
+++ b/design-data/restrictions.csv
@@ -1907,3 +1907,17 @@ NONE,XVOTE,NONE,VJOURNAL,ZERO
NONE,XVOTE,NONE,VTODO,ZERO
NONE,XVOTE,NONE,VVOTER,ZERO
NONE,XVOTE,NONE,X,ZEROPLUS
+NONE,VPATCH,DTSTAMP,NONE,ONE
+NONE,VPATCH,UID,NONE,ONE
+NONE,VPATCH,PATCHVERSION,NONE,ZEROORONE
+NONE,VPATCH,PATCHORDER,NONE,ZEROORONE
+NONE,VPATCH,X,NONE,ZEROPLUS
+NONE,VPATCH,NONE,XPATCH,ONEPLUS
+NONE,VPATCH,NONE,X,ZEROPLUS
+NONE,XPATCH,PATCHTARGET,NONE,ONE
+NONE,XPATCH,PATCHDELETE,NONE,ZEROPLUS
+NONE,XPATCH,PATCHPARAMETER,NONE,ZEROPLUS
+NONE,XPATCH,X,NONE,ZEROPLUS
+NONE,XPATCH,NONE,VPATCH,ZERO
+NONE,XPATCH,NONE,XPATCH,ZERO
+NONE,XPATCH,NONE,X,ZEROPLUS
diff --git a/src/libical/icalcomponent.c b/src/libical/icalcomponent.c
index b72e80f8..36e4f665 100644
--- a/src/libical/icalcomponent.c
+++ b/src/libical/icalcomponent.c
@@ -602,6 +602,7 @@ icalcomponent *icalcomponent_get_first_real_component(icalcomponent *c)
kind == ICAL_VFREEBUSY_COMPONENT ||
kind == ICAL_VAVAILABILITY_COMPONENT ||
kind == ICAL_VPOLL_COMPONENT ||
+ kind == ICAL_VPATCH_COMPONENT ||
kind == ICAL_VQUERY_COMPONENT || kind == ICAL_VAGENDA_COMPONENT) {
return comp;
}
@@ -1175,6 +1176,10 @@ static const struct icalcomponent_kind_map component_map[] = {
{ICAL_VVOTER_COMPONENT, "VVOTER"},
{ICAL_XVOTE_COMPONENT, "VOTE"},
+ /* VPATCH components */
+ {ICAL_VPATCH_COMPONENT, "VPATCH"},
+ {ICAL_XPATCH_COMPONENT, "PATCH"},
+
/* End of list */
{ICAL_NO_COMPONENT, ""},
};
@@ -1979,6 +1984,16 @@ icalcomponent *icalcomponent_new_xvote(void)
return icalcomponent_new(ICAL_XVOTE_COMPONENT);
}
+icalcomponent *icalcomponent_new_vpatch(void)
+{
+ return icalcomponent_new(ICAL_VPATCH_COMPONENT);
+}
+
+icalcomponent *icalcomponent_new_xpatch(void)
+{
+ return icalcomponent_new(ICAL_XPATCH_COMPONENT);
+}
+
/*
* Timezone stuff.
*/
diff --git a/src/libical/icalcomponent.h b/src/libical/icalcomponent.h
index 12398952..c5ca6160 100644
--- a/src/libical/icalcomponent.h
+++ b/src/libical/icalcomponent.h
@@ -304,4 +304,8 @@ LIBICAL_ICAL_EXPORT icalcomponent *icalcomponent_new_vvoter(void);
LIBICAL_ICAL_EXPORT icalcomponent *icalcomponent_new_xvote(void);
+LIBICAL_ICAL_EXPORT icalcomponent *icalcomponent_new_vpatch(void);
+
+LIBICAL_ICAL_EXPORT icalcomponent *icalcomponent_new_xpatch(void);
+
#endif /* !ICALCOMPONENT_H */
diff --git a/src/libical/icalenums.h b/src/libical/icalenums.h
index 4cb76bad..b7b0f96d 100644
--- a/src/libical/icalenums.h
+++ b/src/libical/icalenums.h
@@ -61,7 +61,9 @@ typedef enum icalcomponent_kind
ICAL_XAVAILABLE_COMPONENT,
ICAL_VPOLL_COMPONENT,
ICAL_VVOTER_COMPONENT,
- ICAL_XVOTE_COMPONENT
+ ICAL_XVOTE_COMPONENT,
+ ICAL_VPATCH_COMPONENT,
+ ICAL_XPATCH_COMPONENT
} icalcomponent_kind;
/***********************************************************************