/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is ETNA Relax NG validator. * * The Initial Developer of the Original Code is The Connexions Project. * * Portions created by the Initial Developer are Copyright (C) 2004-2006 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Laurent Jouanneau , Original author * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" /** * The diIDatatype interface represents a built-in datatype of a datatype library */ [scriptable, uuid(1b6b01f6-bcd0-4356-a13a-fd1bc7c62681)] interface diIDatatype: nsISupports { /** * add a parameter used to test a value. ex: maxLength for a string datattype * If the parameter exists, the value replace the old value * @param aName the name of the parameter * @param aValue the value of the parameter * @return true if the parameter is ok */ boolean addParameter (in AString aName, in AString aValue); /** * Remove a parameter * @param aName the name of the parameter */ //void removeParameter (in AString aName); /** * The mode for testing : * false to test only datatype * true to test the datatype and to test the equality with the value */ attribute boolean testEquality; /** * the value that a data should match. * When changing this property, the testing mode become true. */ attribute AString value; /** * the default value for this datatype */ attribute AString defaultValue; /** * test if the content of a string match the datatype and also against the value, * depending the testEquality property. * @param aData the string to test * @return the test result */ boolean test(in AString aData); }; /** * the diIDatatypeFactory is used to get an instance of a datatype object * it instancies a datatype library. */ [scriptable, uuid(996c9660-5e3b-4949-ba78-a76f1442dbcf)] interface diIDatatypeFactory: nsISupports { /** * get an instance of a datatype object * @param aDatatypeUri the uri of the datatype library we want (ex: "http://www.w3.org/2001/XMLSchema-datatypes") * @param aName the name of the datatype (for XMLSchema-datatypes, a NCName name) * @return a diIDatatype object */ diIDatatype getDatatype(in AString aDatatypeUri, in AString aName); }; /** * the diIDatatypeLibrary is used to get an instance of a datatype object */ [scriptable, uuid(161d23f5-8706-44c2-bd87-26013153b227)] interface diIDatatypeLibrary: nsISupports { readonly attribute AString name; /** * get an instance of a datatype object * @param aDatatypeUri the uri of the datatype library we want (ex: "http://www.w3.org/2001/XMLSchema-datatypes") * @param aName the name of the datatype (for XMLSchema-datatypes, a NCName name) * @return a diIDatatype object */ diIDatatype getDatatype(in AString aName); }; %{C++ //{d7bae6c0-b51f-479d-8e52-52b3c390747e} #define DIDATATYPE_FACTORY_CONTRACTID "@disruptive-innovations.com/datatype/factory;1" #define DIDATATYPE_FACTORY_UUID { 0xd7bae6c0, 0xb51f, 0x479d, { 0x8e, 0x52 ,0x52, 0xb3, 0xc3, 0x90, 0x74, 0x7e}} #define DIDATATYPE_LIBRARY_CONTRACTID_PREFIX "@disruptive-innovations.com/datatype/library;1?name=" %}