#include <maya/MString.h>
#include <maya/MStatus.h>
#include <maya/MObject.h>
#include <maya/MFileIO.h>
#include <maya/MSelectionList.h>
#include <maya/MGlobal.h>
#include <maya/MPxCommand.h>
#include <maya/MFnPlugin.h>
#include <maya/MIOStream.h>
public:
                        referenceQuery();
    virtual             ~referenceQuery();
    static      void   *creator();
};
referenceQuery::referenceQuery()
{
}
referenceQuery::~referenceQuery()
{
}
void *referenceQuery::creator()
{
    return new referenceQuery;
}
bool referenceQuery::isUndoable() const {
    return false;
};
{
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    for( 
unsigned i = 0; i < referenceFiles.
length(); i++ ) {
 
                                              connectionsMade );
        cout << "Referenced File: " << referenceFiles[i].asChar() << ":\n";
        cout << "   Connections Made:\n";
        unsigned j;
        for( j = 0; j < connectionsMade.
length(); j+=2 ) {
 
            cout << "   ";
            cout << connectionsMade[j].asChar() << " -> ";
            if( j + 1 < connectionsMade.
length() ) {
 
                cout << connectionsMade[j+1].asChar();
            }
            cout << "\n" ;
        }
        cout << "\n";
                                              connectionsBroken );
        cout << "   Connections Broken: \n";
        for( j = 0; j < connectionsBroken.
length(); j+=2 ) {
 
            cout << "   ";
            cout << connectionsBroken[j].asChar() << " -> ";
            if( j + 1 < connectionsBroken.
length() ) {
 
                cout << connectionsBroken[j+1].asChar();
            }
            cout << "\n" ;
        }
        cout << "\n";
        
        cout << "   Attrs Changed Since File Open:\n";
        for( j = 0; j < referencedNodes.
length(); j++ ) {
 
            
            
            
            MString cmd( 
"listAttr -s -cfo " );
 
            cmd = cmd + referencedNodes[j];
            
            for( 
unsigned k = 0; k < referencedAttributes.
length(); k++ ) {
 
                MString plugName( referencedNodes[j] );
 
                plugName = plugName + "." + referencedAttributes[k];
                cout << "       " << plugName.asChar() << "\n";
            }
        }
        cout << "\n";
    }
    
    
    cout << "=====================================\n";
}
{
    MFnPlugin plugin( obj, PLUGIN_COMPANY, 
"4.0", 
"Any");
 
    
    status = plugin.registerCommand( "refQuery", 
                                     referenceQuery::creator );
    if (!status) {
        status.
perror(
"registerCommand");
        return status;
    }
    return status;
}
{
    status = plugin.deregisterCommand( "refQuery" );
    if (!status) {
        status.
perror(
"deregisterCommand");
    }
    return status;
}