summaryrefslogtreecommitdiffstats
path: root/forms/source/xforms/mip.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'forms/source/xforms/mip.hxx')
-rw-r--r--forms/source/xforms/mip.hxx102
1 files changed, 102 insertions, 0 deletions
diff --git a/forms/source/xforms/mip.hxx b/forms/source/xforms/mip.hxx
new file mode 100644
index 000000000..97b98d04e
--- /dev/null
+++ b/forms/source/xforms/mip.hxx
@@ -0,0 +1,102 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#pragma once
+
+#include <rtl/ustring.hxx>
+
+namespace xforms
+{
+/** represents the XForms *m*odel *i*tem *p*roperties (MIPs) for a
+ * given XNode in the instance data at a given point in time. The
+ * values will not be updated; for updated values new MIP objects have
+ * to be created/queried. */
+class MIP
+{
+ bool mbHasReadonly;
+ bool mbReadonly;
+
+ bool mbHasRequired;
+ bool mbRequired;
+
+ bool mbHasRelevant;
+ bool mbRelevant;
+
+ bool mbHasConstraint;
+ bool mbConstraint;
+
+ bool mbHasCalculate;
+
+ bool mbHasTypeName;
+ OUString msTypeName;
+
+ OUString msConstraintExplanation;
+
+public:
+ MIP();
+
+ /// inherit from upper-level MIPs
+ void inherit(const MIP&);
+
+ /// join with same-level MIPs
+ void join(const MIP&);
+
+ // - type (static; default: xsd:string)
+ // (currently default implemented as empty string)
+ const OUString& getTypeName() const { return msTypeName; }
+ void setTypeName(const OUString&);
+ void resetTypeName();
+
+ // - readonly (computed XPath; default: false; true if calculate exists)
+ bool isReadonly() const;
+ void setReadonly(bool);
+ void resetReadonly();
+
+ // - required (computed XPath; default: false)
+ bool isRequired() const { return mbRequired; }
+ void setRequired(bool);
+ void resetRequired();
+
+ // - relevant (computed XPath; default: true)
+ bool isRelevant() const { return mbRelevant; }
+ void setRelevant(bool);
+ void resetRelevant();
+
+ // - constraint (computed XPath; default: true)
+ bool isConstraint() const { return mbConstraint; }
+ void setConstraint(bool);
+ void resetConstraint();
+
+ // explain _why_ a constraint failed
+ void setConstraintExplanation(const OUString&);
+ const OUString& getConstraintExplanation() const { return msConstraintExplanation; }
+
+ // - calculate (computed XPath; default: has none (false))
+ // (for calculate, we only store whether a calculate MIP is present;
+ // the actual calculate value is handled my changing the instance
+ // directly)
+ void setHasCalculate(bool);
+
+ // - minOccurs/maxOccurs (computed XPath; default: 0/inf)
+ // - p3ptype (static; no default)
+};
+
+} // namespace xforms
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */