/******************************************************************************* * Copyright (c) 2007, 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: *     IBM Corporation - initial API and implementation ****************************************************************************** * **//**  * Object userProfile()  * @type userProfile  * @super Object  * @memberOf userProfile  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535915.aspx*/function userProfile(){};userProfile.prototype= new Object();/**  * function addReadRequest(sAttributeName,vReserved)  * @param {String} sAttributeName  * @param {Boolean} vReserved  * @type Boolean  * @returns {Boolean}
  * @memberOf userProfile  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535929.aspx*/userProfile.prototype.addReadRequest=function(sAttributeName,vReserved){};/**  * function clearRequest()  * @memberOf userProfile  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536355.aspx*/userProfile.prototype.clearRequest=function(){};/**  * function doReadRequest(vUsageCode,vFriendlyName,vDomain,vPath,vExpiration,vReserved)  * @param {Number} vUsageCode  * @param {String} vFriendlyName  * @param {String} vDomain  * @param {String} vPath  * @param {Variant} vExpiration  * @param {Optional.} vReserved				This parameter is reserved.  * @memberOf userProfile  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536413.aspx*/userProfile.prototype.doReadRequest=function(vUsageCode,vFriendlyName,vDomain,vPath,vExpiration,vReserved){};/**  * function getAttribute(sAttributeName)  * @param {String} sAttributeName  * @type String  * @returns {String}
  * @memberOf userProfile  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536431.aspx*/userProfile.prototype.getAttribute=function(sAttributeName){};/**  * function setAttribute(sName,vValue)  * @param {String} sName  * @param {Number} vValue  * @memberOf userProfile  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536739.aspx*/userProfile.prototype.setAttribute=function(sName,vValue){};