/******************************************************************************
* The MIT License
* Copyright (c) 2003 Novell Inc., www.novell.com
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the Software), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*******************************************************************************/
//
// System.DirectoryServices.PropertyValueCollection .cs
//
// Author:
// Sunil Kumar (sunilk@novell.com)
//
// (C) Novell Inc.
//
using System;
using System.Collections;
namespace System.DirectoryServices{
public class PropertyValueCollection : CollectionBase
{
private bool _Mbit;
private DirectoryEntry _parent;
internal PropertyValueCollection(DirectoryEntry parent):base()
{
_Mbit = false;
_parent = parent;
}
internal bool Mbit
{
get
{
return _Mbit;
}
set
{
_Mbit = value;
}
}
public object this[ int index ]
{
get
{
return( (object) List[index] );
}
set
{
List[index] = value;
_Mbit = true;
}
}
public int Add( object value )
{
if(Contains(value))
{
return -1;
}
else
{
_Mbit=true;
return( List.Add( value ) );
}
}
public void AddRange(object[] values)
{
foreach (object value in values)
Add (value);
}
public void AddRange (PropertyValueCollection coll)
{
foreach (object value in coll)
Add (value);
}
public int IndexOf( object value )
{
return( List.IndexOf( value ) );
}
public void Insert( int index, object value )
{
List.Insert( index, value );
_Mbit = true;
}
public void Remove( object value )
{
List.Remove( value );
_Mbit = true;
}
public bool Contains( object value )
{
return( List.Contains( value ) );
}
internal bool ContainsCaselessStringValue( string value )
{
for(int i=0; i< this.Count; ++i)
{
string lVal = (string) List[i];
if(String.Compare(value,lVal,true)==0)
{
return true;
}
}
return false;
}
public void CopyTo (object[] copy_to, int index)
{
foreach (object o in List)
copy_to[index++] = o;
}
[MonoTODO]
protected override void OnClearComplete ()
{
if (_parent != null) {
_parent.CommitDeferred();
}
}
[MonoTODO]
protected override void OnInsertComplete (int index, object value)
{
if (_parent != null) {
_parent.CommitDeferred();
}
}
[MonoTODO]
protected override void OnRemoveComplete (int index, object value)
{
if (_parent != null) {
_parent.CommitDeferred();
}
}
[MonoTODO]
protected override void OnSetComplete (int index, object oldValue, object newValue)
{
if (_parent != null) {
_parent.CommitDeferred();
}
}
public object Value
{
get
{
switch (Count) {
case 0 :
return null;
case 1 :
return (object) List[0];
default :
// System.Object[] oArray= new System.Object[this.Count];
// object[] oArray= new object[this.Count];
// Array.Copy((System.Array)List,0,(System.Array)oArray,0,this.Count);
Array LArray = new object[Count];
for ( int i = LArray.GetLowerBound(0); i <= LArray.GetUpperBound(0); i++ )
LArray.SetValue( List[i], i );
return LArray;
}
}
set
{
if (value == null && List.Count == 0)
return;
List.Clear();
if (value != null) {
Add(value);
}
_Mbit = true;
}
}
}
}
|