enum { kIORegCapacityIncrement = 4 };
-bool IORegistryEntry::init( OSDictionary * dict = 0 )
+bool IORegistryEntry::init( OSDictionary * dict )
{
OSString * prop;
/* Wrappers to synchronize property table */
-#define wrap1(func, type, constant) \
-OSObject * \
-IORegistryEntry::func ## Property( type * aKey) constant \
-{ \
- OSObject * obj; \
- \
- PLOCK; \
- obj = getPropertyTable()->func ## Object( aKey ); \
- PUNLOCK; \
- \
- return( obj ); \
-}
-
#define wrap2(type, constant) \
OSObject * \
IORegistryEntry::copyProperty( type * aKey) constant \
return( obj ); \
}
-#define wrap3(func,type,constant) \
-void \
-IORegistryEntry::func ## Property( type * aKey) constant \
-{ \
- PLOCK; \
- getPropertyTable()->func ## Object( aKey ); \
- PUNLOCK; \
-}
-
#define wrap4(type,constant) \
OSObject * \
IORegistryEntry::getProperty( type * aKey, \
return( kIOReturnUnsupported );
}
-wrap1(get, const OSSymbol, const) // getProperty() definition
-wrap1(get, const OSString, const) // getProperty() definition
-wrap1(get, const char, const) // getProperty() definition
-
wrap2(const OSSymbol, const) // copyProperty() definition
wrap2(const OSString, const) // copyProperty() definition
wrap2(const char, const) // copyProperty() definition
-wrap3(remove, const OSSymbol,) // removeProperty() definition
-wrap3(remove, const OSString,) // removeProperty() definition
-wrap3(remove, const char,) // removeProperty() definition
-
wrap4(const OSSymbol, const) // getProperty() w/plane definition
wrap4(const OSString, const) // getProperty() w/plane definition
wrap4(const char, const) // getProperty() w/plane definition
wrap5(const char, const) // copyProperty() w/plane definition
+OSObject *
+IORegistryEntry::getProperty( const OSSymbol * aKey) const
+{
+ OSObject * obj;
+
+ PLOCK;
+ obj = getPropertyTable()->getObject( aKey );
+ PUNLOCK;
+
+ return( obj );
+}
+
+OSObject *
+IORegistryEntry::getProperty( const OSString * aKey) const
+{
+ const OSSymbol * tmpKey = OSSymbol::withString( aKey );
+ OSObject * obj = getProperty( tmpKey );
+
+ tmpKey->release();
+ return( obj );
+}
+
+OSObject *
+IORegistryEntry::getProperty( const char * aKey) const
+{
+ const OSSymbol * tmpKey = OSSymbol::withCString( aKey );
+ OSObject * obj = getProperty( tmpKey );
+
+ tmpKey->release();
+ return( obj );
+}
+
+void
+IORegistryEntry::removeProperty( const OSSymbol * aKey)
+{
+ PLOCK;
+ getPropertyTable()->removeObject( aKey );
+ PUNLOCK;
+}
+
+void
+IORegistryEntry::removeProperty( const OSString * aKey)
+{
+ const OSSymbol * tmpKey = OSSymbol::withString( aKey );
+ removeProperty( tmpKey );
+ tmpKey->release();
+}
+
+void
+IORegistryEntry::removeProperty( const char * aKey)
+{
+ const OSSymbol * tmpKey = OSSymbol::withCString( aKey );
+ removeProperty( tmpKey );
+ tmpKey->release();
+}
+
bool
IORegistryEntry::setProperty( const OSSymbol * aKey, OSObject * anObject)
{
bool
IORegistryEntry::setProperty( const OSString * aKey, OSObject * anObject)
{
- bool ret = false;
- PLOCK;
- ret = getPropertyTable()->setObject( aKey, anObject );
- PUNLOCK;
+ const OSSymbol * tmpKey = OSSymbol::withString( aKey );
+ bool ret = setProperty( tmpKey, anObject );
+ tmpKey->release();
return ret;
}
bool
IORegistryEntry::setProperty( const char * aKey, OSObject * anObject)
{
- bool ret = false;
- PLOCK;
- ret = getPropertyTable()->setObject( aKey, anObject );
- PUNLOCK;
-
+ const OSSymbol * tmpKey = OSSymbol::withCString( aKey );
+ bool ret = setProperty( tmpKey, anObject );
+
+ tmpKey->release();
return ret;
}
OSSymbol * aSymbol = (OSSymbol *) OSSymbol::withCString( aString );
if( aSymbol) {
- PLOCK;
- ret = getPropertyTable()->setObject( aKey, aSymbol );
- PUNLOCK;
+ const OSSymbol * tmpKey = OSSymbol::withCString( aKey );
+ ret = setProperty( tmpKey, aSymbol );
+
+ tmpKey->release();
aSymbol->release();
}
return( ret );
OSBoolean * aBooleanObj = OSBoolean::withBoolean( aBoolean );
if( aBooleanObj) {
- PLOCK;
- ret = getPropertyTable()->setObject( aKey, aBooleanObj );
- PUNLOCK;
+ const OSSymbol * tmpKey = OSSymbol::withCString( aKey );
+ ret = setProperty( tmpKey, aBooleanObj );
+
+ tmpKey->release();
aBooleanObj->release();
}
return( ret );
OSNumber * anOffset = OSNumber::withNumber( aValue, aNumberOfBits );
if( anOffset) {
- PLOCK;
- ret = getPropertyTable()->setObject( aKey, anOffset );
- PUNLOCK;
+ const OSSymbol * tmpKey = OSSymbol::withCString( aKey );
+ ret = setProperty( tmpKey, anOffset );
+
+ tmpKey->release();
anOffset->release();
}
return( ret );
OSData * data = OSData::withBytes( bytes, length );
if( data) {
- PLOCK;
- ret = getPropertyTable()->setObject( aKey, data );
- PUNLOCK;
+ const OSSymbol * tmpKey = OSSymbol::withCString( aKey );
+ ret = setProperty( tmpKey, data );
+
+ tmpKey->release();
data->release();
}
return( ret );
/* Name, location, paths */
-const char * IORegistryEntry::getName( const IORegistryPlane * plane = 0 ) const
+const char * IORegistryEntry::getName( const IORegistryPlane * plane ) const
{
OSSymbol * sym = 0;
}
const OSSymbol * IORegistryEntry::copyName(
- const IORegistryPlane * plane = 0 ) const
+ const IORegistryPlane * plane ) const
{
OSSymbol * sym = 0;
}
const OSSymbol * IORegistryEntry::copyLocation(
- const IORegistryPlane * plane = 0 ) const
+ const IORegistryPlane * plane ) const
{
OSSymbol * sym = 0;
return( sym );
}
-const char * IORegistryEntry::getLocation( const IORegistryPlane * plane = 0 ) const
+const char * IORegistryEntry::getLocation( const IORegistryPlane * plane ) const
{
const OSSymbol * sym = copyLocation( plane );
const char * result = 0;
}
void IORegistryEntry::setName( const OSSymbol * name,
- const IORegistryPlane * plane = 0 )
+ const IORegistryPlane * plane )
{
const OSSymbol * key;
}
void IORegistryEntry::setName( const char * name,
- const IORegistryPlane * plane = 0 )
+ const IORegistryPlane * plane )
{
OSSymbol * sym = (OSSymbol *)OSSymbol::withCString( name );
if ( sym ) {
}
void IORegistryEntry::setLocation( const OSSymbol * location,
- const IORegistryPlane * plane = 0 )
+ const IORegistryPlane * plane )
{
const OSSymbol * key;
}
void IORegistryEntry::setLocation( const char * location,
- const IORegistryPlane * plane = 0 )
+ const IORegistryPlane * plane )
{
OSSymbol * sym = (OSSymbol *)OSSymbol::withCString( location );
if ( sym ) {
}
bool
-IORegistryEntry::compareName( OSString * name, OSString ** matched = 0 ) const
+IORegistryEntry::compareName( OSString * name, OSString ** matched ) const
{
const OSSymbol * sym = copyName();
bool isEqual;
}
bool
-IORegistryEntry::compareNames( OSObject * names, OSString ** matched = 0 ) const
+IORegistryEntry::compareNames( OSObject * names, OSString ** matched ) const
{
OSString * string;
OSCollection * collection;
const char * str;
const char * result = 0;
u_quad_t num1, num2;
- char c1, c2;
+ char lastPathChar, lastLocationChar;
str = getLocation( plane );
if( str) {
- c2 = str[0];
+ lastPathChar = cmp[0];
+ lastLocationChar = str[0];
do {
- num1 = strtouq( cmp, (char **) &cmp, 16 );
- if( c2) {
+ if( lastPathChar) {
+ num1 = strtouq( cmp, (char **) &cmp, 16 );
+ lastPathChar = *cmp++;
+ } else
+ num1 = 0;
+
+ if( lastLocationChar) {
num2 = strtouq( str, (char **) &str, 16 );
- c2 = str[0];
+ lastLocationChar = *str++;
} else
num2 = 0;
if( num1 != num2)
break;
- c1 = *cmp++;
-
- if( (c2 == ':') && (c2 == c1)) {
- str++;
- continue;
- }
-
- if( ',' != c1) {
+ if (!lastPathChar && !lastLocationChar) {
result = cmp - 1;
break;
}
- if( c2) {
- if( c2 != ',')
- break;
- str++;
- }
+ if( (',' != lastPathChar) && (':' != lastPathChar))
+ lastPathChar = 0;
+
+ if (lastPathChar && lastLocationChar && (lastPathChar != lastLocationChar))
+ break;
} while( true);
}
}
const OSSymbol * IORegistryEntry::hasAlias( const IORegistryPlane * plane,
- char * opath = 0, int * length = 0 ) const
+ char * opath, int * length ) const
{
IORegistryEntry * entry;
IORegistryEntry * entry2;
IORegistryEntry * IORegistryEntry::fromPath(
const char * path,
- const IORegistryPlane * plane = 0,
- char * opath = 0,
- int * length = 0,
- IORegistryEntry * fromEntry = 0 )
+ const IORegistryPlane * plane,
+ char * opath,
+ int * length,
+ IORegistryEntry * fromEntry )
{
IORegistryEntry * where = 0;
IORegistryEntry * aliasEntry = 0;
IORegistryEntry * IORegistryEntry::childFromPath(
const char * path,
- const IORegistryPlane * plane = 0,
- char * opath = 0,
- int * len = 0 )
+ const IORegistryPlane * plane,
+ char * opath,
+ int * len )
{
return( IORegistryEntry::fromPath( path, plane, opath, len, this ));
}
inline bool IORegistryEntry::arrayMember( OSArray * set,
const IORegistryEntry * member,
- unsigned int * index = 0 ) const
+ unsigned int * index ) const
{
int i;
OSObject * probeObject;
} else {
- links = OSArray::withObjects( & (const OSObject *) to, 1, 1 );
+ links = OSArray::withObjects( (const OSObject **) &to, 1, 1 );
result = (links != 0);
if( result) {
result = registryTable()->setObject( plane->keys[ relation ],
bool IORegistryEntry::isChild( IORegistryEntry * child,
const IORegistryPlane * plane,
- bool onlyChild = false ) const
+ bool onlyChild ) const
{
OSArray * links;
bool ret = false;
bool IORegistryEntry::isParent( IORegistryEntry * parent,
const IORegistryPlane * plane,
- bool onlyParent = false ) const
+ bool onlyParent ) const
{
OSArray * links;
IORegistryIterator *
IORegistryIterator::iterateOver( IORegistryEntry * root,
const IORegistryPlane * plane,
- IOOptionBits options = 0 )
+ IOOptionBits options )
{
IORegistryIterator * create;
IORegistryIterator *
IORegistryIterator::iterateOver( const IORegistryPlane * plane,
- IOOptionBits options = 0 )
+ IOOptionBits options )
{
return( iterateOver( gRegistryRoot, plane, options ));
}