GME  13
Mga.idl
Go to the documentation of this file.
00001 import "oaidl.idl";
00002 import "ocidl.idl";
00003 
00004 #include "InterfaceColl.h"
00005 #include "InterfaceVersion.h"
00006 
00007 import "Meta.idl";
00008 
00009 // --------------------------- Mga IDL
00010 
00011 interface IMgaProject;
00012 interface IMgaTerritory;
00013 interface IMgaAddOn;
00014 interface IMgaComponent;
00015 interface IMgaClient;
00016 interface IMgaEventSink;
00017 
00018 interface IMgaObject;
00019 interface IMgaFCO;
00020 interface IMgaFolder;
00021 interface IMgaModel;
00022 interface IMgaAtom;
00023 interface IMgaPart;
00024 interface IMgaConnection;
00025 interface IMgaReference;
00026 interface IMgaSet;
00027 interface IMgaSimpleConnection;
00028 interface IMgaConnPoint;
00029 interface IMgaFilter;
00030 interface IMgaAttribute;
00031 interface IMgaRegNode;
00032 
00033 interface IMgaObjects;
00034 interface IMgaFCOs;
00035 interface IMgaFolders;
00036 interface IMgaParts;
00037 interface IMgaAttributes;
00038 interface IMgaRegNodes;
00039 interface IMgaConnPoints;
00040 interface IMgaAddOns;
00041 interface IMgaTerritories;
00042 interface IMgaComponents;
00043 interface IMgaClients;
00044 
00045 // ------- Typedefs
00046 
00047 typedef enum  accesstype_enum {
00048         ACC_NULL = 0,
00049         ACC_READ = 1,
00050         ACC_WRITE = 2,
00051         ACC_LINK = 4,
00052 } accesstype_enum;
00053 
00054 typedef enum transactiontype_enum {
00055         TRANSACTION_GENERAL,
00056         TRANSACTION_READ_ONLY,
00057         TRANSACTION_NON_NESTED
00058 } transactiontype_enum;
00059 
00060 
00061 typedef enum attstatus_enum {
00062         ATTSTATUS_HERE          = 0,
00063         ATTSTATUS_METADEFAULT = -1,
00064         ATTSTATUS_UNDEFINED       = -2,
00065         ATTSTATUS_INVALID         = -3,
00066 //AND:
00067         ATTSTATUS_IN_ARCHETYPE1 = 1,
00068         ATTSTATUS_IN_ARCHETYPE2 = 2,
00069         ATTSTATUS_IN_ARCHETYPE3 = 3,
00070         ATTSTATUS_IN_ARCHETYPE4 = 4,
00071 // etc.
00072 } attstatus_enum;
00073 
00074 typedef BSTR ID_type;
00075 
00076 typedef enum openmode { OPEN_READ = 1, OPEN_READWRITE = 3} openmode;
00077 
00078 typedef enum globalevent_enum  {
00079         GLOBALEVENT_OPEN_PROJECT,                                                               // include create
00080         GLOBALEVENT_CLOSE_PROJECT,
00081         GLOBALEVENT_SAVE_PROJECT,
00082     GLOBALEVENT_NEW_TERRITORY,
00083     GLOBALEVENT_DESTROY_TERRITORY,                                                      // any territory has been destroyed (includes destroy by release)
00084     GLOBALEVENT_COMMIT_TRANSACTION,
00085     GLOBALEVENT_ABORT_TRANSACTION,
00086     GLOBALEVENT_UNDO,
00087     GLOBALEVENT_REDO,
00088         GLOBALEVENT_PROJECT_PROPERTIES,                                                 // project properties Name, author, etc changed
00089         GLOBALEVENT_NOTIFICATION_READY,
00090         GLOBALEVENT_OPEN_PROJECT_FINISHED, // notification is sent after 1. File>New 2. File>Open 3. File>Import XML
00091                                                                                                                         // application specific (GUI) events
00092         APPEVENT_XML_IMPORT_BEGIN = 0xFF,
00093         APPEVENT_XML_IMPORT_END,
00094         APPEVENT_XML_IMPORT_FCOS_BEGIN,
00095         APPEVENT_XML_IMPORT_FCOS_END,
00096         APPEVENT_XML_IMPORT_SPECIAL_BEGIN,
00097         APPEVENT_XML_IMPORT_SPECIAL_END,
00098         APPEVENT_LIB_ATTACH_BEGIN,
00099         APPEVENT_LIB_ATTACH_END
00100 
00101 } globalevent_enum;
00102 
00103 
00104 const long RELID_BASE_MAX  = 0x7FFFFFF; //assigned to non-derived ojects
00105 const long RELID_VALUE_MAX = 0x7FFFFFFF;   // automatically assigned to deriveds
00106 
00107 
00108 typedef enum objectevent_enum {
00109 [ helpstring("The object has been created")]
00110                 OBJEVENT_CREATED    =   0x80000000,             
00111 [ helpstring("The object has been destroyed (limited access is available)")]
00112                 OBJEVENT_DESTROYED  =   0x40000000,             
00113 [ helpstring("The object is going to be deleted.")]
00114                 OBJEVENT_PRE_DESTROYED  = 0x20000000,
00115 [ helpstring("Status of attribute/registry node is going to change.")]
00116                 OBJEVENT_PRE_STATUS =   0x10000000,
00117 [ helpstring("The object is being copied.")]
00118                 OBJEVENT_COPIED     =   0x08000000,
00119 [ helpstring("Attribute changed")]
00120                 OBJEVENT_ATTR       =   0x00000001,             
00121 [ helpstring("Registry changed")]
00122                 OBJEVENT_REGISTRY   =   0x00000002,             
00123 [ helpstring("child added")]
00124                 OBJEVENT_NEWCHILD   =   0x00000004,             
00125 [ helpstring("ref pointer, set member, conn endpoint change")]
00126                 OBJEVENT_RELATION   =   0x00000008,             
00127 [ helpstring("Name, etc.")]
00128                 OBJEVENT_PROPERTIES =   0x00000010,             
00129 [ helpstring("Subtype, instance created")]
00130                 OBJEVENT_SUBT_INST  =   0x00000020,             
00131 //[ helpstring("Basetype relation broken/added (???)")]
00132 //              OBJEVENT_BASE       =   0x00000040,             
00133 //[ helpstring("Anything under the object 'Position' regnode")]
00134 //              OBJEVENT_POSITION   =   0x00000080,                             
00135 [ helpstring("Object has been moved")]
00136                 OBJEVENT_PARENT         =   0x00000100,                         
00137 [ helpstring("child removed/ moved away")]
00138                 OBJEVENT_LOSTCHILD  =   0x00000200,             
00139 [ helpstring("object has been referenced")]
00140                 OBJEVENT_REFERENCED =   0x00000400,             
00141 [ helpstring("object has been connected")]
00142                 OBJEVENT_CONNECTED  =   0x00000800,             
00143 [ helpstring("object has been included in set")]
00144                 OBJEVENT_SETINCLUDED=   0x00001000,             
00145 [ helpstring("object reference has been released")]
00146                 OBJEVENT_REFRELEASED=   0x00002000,             
00147 [ helpstring("object has been disconnected")]
00148                 OBJEVENT_DISCONNECTED=  0x00004000,             
00149 [ helpstring("object has been excluded from set")]
00150                 OBJEVENT_SETEXCLUDED=   0x00008000,              
00151 [ helpstring("object has been marked readonly")]
00152                 OBJEVENT_MARKEDRO   =   0x00010000,
00153 [ helpstring("object has been marked readwrite (readonly flag has been removed)")]
00154                 OBJEVENT_MARKEDRW   =   0x00020000,
00155 
00156 [ helpstring("user event bitfield, user events should fall into this range")]
00157                 OBJEVENT_USERBITS       =       0x00FF0000,             
00158 [ helpstring("user event: GME open model")]
00159                 OBJEVENT_OPENMODEL      =       0x00080000,             
00160 [ helpstring("user event: GME object selected")]
00161                 OBJEVENT_SELECT         =       0x00100000,             
00162 [ helpstring("user event: GME object deselected")]
00163                 OBJEVENT_DESELECT       =       0x00200000,             
00164 [ helpstring("user event: mouse over GME object")]
00165                 OBJEVENT_MOUSEOVER      =       0x00400000,             
00166 [ helpstring("user event: GME close model")]
00167                 OBJEVENT_CLOSEMODEL     =       0x00800000,             
00168 }  objectevent_enum;             
00169 
00170 typedef enum objectstatus_enum {
00171         [ helpstring("method Create  (call when nothing is open)")]     OBJECT_EXISTS,
00172         OBJECT_DELETED,
00173         OBJECT_ZOMBIE,
00174 }  objectstatus_enum;             
00175 
00176 // Used with MgaProject::Preferences()
00177 
00178 typedef enum preference_flags {
00179 MGAPREF_NODUPLICATENAMES  = 0x00000001,         // make sure, names are never duplicated
00180 MGAPREF_NAMENEWOBJECTS    = 0x00000002,         // assign kind/rolename to new objects
00181 MGAPREF_IGNORECONNCHECKS =  0x00000004,         // do not complain on partially connected simple connections
00182 MGAPREF_FREEINSTANCEREFS =  0x00000008,         // do not bind refs in subtypes/instances to successors of ref target in basetype 
00183 MGAPREF_RELAXED_RDATTRTYPES =  0x00000010,      // attributes may be read as types other than the real type
00184 MGAPREF_RELAXED_WRATTRTYPES =  0x00000020,      // attributes may be written as types other than the real type
00185 MGAPREF_MANUAL_RELIDS           = 0x00000040,   // relid-s are assigned manually
00186 MGAPREF_NO_NESTED_TX = 0x00000080 // don't use nested transactions, as they are very slow. If an MGA operation fails, the entire transaction must be aborted.
00187 } preference_flags;
00188 
00189 
00190 // Used with MgaProject::OperationsMask()
00191 // Affected operations: MgaModel::DeriveFCOs, MgaFolder::DeriveRootObject, 
00192 //                                              *::CopyFCOs, *::MoveFCOs, MgaObject::DestroyObject
00193 
00194 // The operationsmask consists of 3 bytes, which individually control reference, connection and set operations
00195 //      each byte has space for 3 2-bit opmask codes for relations which are 'internal', 'incoming' or 'outgoing' 
00196 //      relative to the set of objects primarily affected by the operation (i.e. the objects created, moved or 
00197 //      deleted, along with their descendants)
00198 //  other flags (like MM_FULLDELETE) may occupy the remaining 2 bits
00199 
00200 typedef enum opmask_codes {
00201         MM_ERROR = 0,                           // signal error, abort operation
00202         MM_CLEAR = 1,                           // clear the relation (and check object validity)
00203         MM_DO    = 2,                           // keep the relation in the resulting object (and check its validity)
00204 
00205     MM_FULLDELETE = 0x40                // fully delete objects with deleted/trucated relations
00206 } opmask_codes;
00207 
00208 typedef enum opmask_shifts {
00209       MM_REF    = 0,
00210       MM_CONN   = 8,
00211       MM_SET    = 16,
00212 
00213       MM_INTERNAL = 0,
00214       MM_INTO     = 2,
00215       MM_OUTOF    = 4,
00216 } opmask_shifts;
00217 
00218 
00219 typedef enum componenttype_enum
00220 {
00221         COMPONENTTYPE_NONE                                      = 0x0000,
00222         COMPONENTTYPE_INTERPRETER                       = 0x0001,
00223         COMPONENTTYPE_ADDON                                     = 0x0002,
00224         COMPONENTTYPE_PLUGIN                            = 0x0004,
00225         COMPONENTTYPE_ALL                                       = 0x0007,
00226 
00227         COMPONENTTYPE_EVENT_BASED                       = COMPONENTTYPE_ADDON,
00228         COMPONENTTYPE_PARADIGM_INDEPENDENT      = 0x0008,
00229         COMPONENTTYPE_EXECENGINE                        = 0x0010,
00230         COMPONENTTYPE_SCRIPT                            = 0x0020,
00231 
00232         COMPONENTTYPE_SYSREGREF                         = 0x0080,    // used in user registry to reference components in system registry
00233 } componenttype_enum;
00234 
00235 typedef enum component_startmode_enum {
00236         GME_MAIN_START          = 0,
00237         GME_BROWSER_START       = 1,
00238         GME_CONTEXT_START       = 2,
00239         GME_EMBEDDED_START  = 3,
00240         GME_MENU_START          = 16,
00241         GME_BGCONTEXT_START = 18,
00242         GME_ICON_START          = 32, 
00243         METAMODEL_CHECK_SYNTAX  = 101,
00244         CONSTMGR_SHOW_CONSTRAINTS = 102,
00245         GME_SILENT_MODE         = 128
00246 } component_startmode_enum;
00247 
00248 
00249 
00250 // MGAERRORTABLE BEGIN                  take care when editing
00251 typedef enum mgaerrors {
00252 // library behavior
00253 [helpstring("This method is not yet implemented")]
00254                 E_MGA_NOT_IMPLEMENTED                   = 0x87650000,
00255 [helpstring("This mode of operation is not supported")]
00256                 E_MGA_NOT_SUPPORTED                             = 0x87650001,
00257 
00258 
00259 // module, paradigm, component error 
00260 [helpstring("MGA data structure conflict: error or incompatibility")]
00261                 E_MGA_MODULE_INCOMPATIBILITY    = 0x87650010,
00262 [helpstring("The paradigm is not registered")]
00263                 E_MGA_PARADIGM_NOTREG                   = 0x87650011,
00264 [helpstring("The paradigm is invalid")]
00265                 E_MGA_PARADIGM_INVALID                  = 0x87650012,
00266 [helpstring("Some addons cannot be loaded/initialized")]
00267                 E_MGA_COMPONENT_ERROR                   = 0x87650013,
00268 
00269 [helpstring("Inconsistent data in database metainfo violated")]
00270                 E_MGA_DATA_INCONSISTENCY                = 0x87650021,
00271 [helpstring("Meta incompatibility")]
00272                 E_MGA_META_INCOMPATIBILITY              = 0x87650022,
00273 
00274 
00275 // project status
00276 [helpstring("Project must be closed")]
00277                 E_MGA_PROJECT_OPEN                              = 0x87650031,
00278 [helpstring("Project must be open")]
00279                 E_MGA_PROJECT_NOT_OPEN                  = 0x87650032,
00280 [helpstring("Database is in read-only mode")]
00281                 E_MGA_READ_ONLY_ACCESS                  = 0x87650033,
00282 [helpstring("Object is unknown in this territory")]
00283                 E_MGA_NOT_IN_TERRITORY                  = 0x87650034,
00284 [helpstring("Operation must execute within transaction")]
00285                 E_MGA_NOT_IN_TRANSACTION                = 0x87650035,
00286 [helpstring("The project is already in transaction"     )]
00287                 E_MGA_ALREADY_IN_TRANSACTION    = 0x87650036,
00288 [helpstring("This transaction must be aborted"  )]
00289                 E_MGA_MUST_ABORT                                = 0x87650037,
00290 [helpstring("Territory/AddOn already destroyed")]
00291                 E_MGA_TARGET_DESTROYED                  = 0x87650038,
00292 
00293 
00294 [helpstring("This is not the callee object's project")]
00295                 E_MGA_FOREIGN_PROJECT                   = 0x87650041,
00296 [helpstring("Object does not belong to this project")]
00297                 E_MGA_FOREIGN_OBJECT                    = 0x87650042,
00298 
00299 // object status
00300 [helpstring("The object is deleted partially inaccessible")]
00301                 E_MGA_OBJECT_DELETED                    = 0x87650051,
00302 [helpstring("The object is deleted and fully inaccessible")]
00303                 E_MGA_OBJECT_ZOMBIE                             = 0x87650052,
00304 [helpstring("The project for this (sub)object has been destroyed")]
00305                 E_MGA_ZOMBIE_NOPROJECT                  = 0x87650053,
00306 [helpstring("The project for this (sub)object has been closed")]
00307                 E_MGA_ZOMBIE_CLOSED_PROJECT             = 0x87650054,
00308 
00309 
00310 // method call arguments
00311 [helpstring("invalid argument")]
00312                 E_MGA_INVALID_ARG                               = 0x87650060,
00313 [helpstring("argument out of range")]
00314                 E_MGA_ARG_RANGE                                 = 0x87650061,
00315 [helpstring("NULL Input COM pointer")]
00316                 E_MGA_INPTR_NULL                                = 0x87650062,
00317 [helpstring("Nonempty COM pointer supplied for output")]
00318                 E_MGA_OUTPTR_NONEMPTY                   = 0x87650063,
00319 [helpstring("NULL output COM pointer address")]
00320                 E_MGA_OUTPTR_NULL                               = 0x87650064,
00321 
00322 
00323 [helpstring("Search by name failed")]
00324                 E_MGA_NAME_NOT_FOUND                    = 0x87650070,
00325 [helpstring("The operation caused name uniqueness conflict")]
00326                 E_MGA_NAME_DUPLICATE                    = 0x87650071,
00327 [helpstring("The operation caused meta violation for object %o")]
00328                 E_MGA_META_VIOLATION                    = 0x87650072,
00329 [helpstring("Object cannot be changed")]
00330                 E_MGA_NOT_CHANGEABLE                    = 0x87650073,
00331 [helpstring("Operation refused due to the state of existing data")]
00332                 E_MGA_OP_REFUSED                                = 0x87650074,
00333 [helpstring("Object belongs to a lib image")]
00334                 E_MGA_LIBOBJECT                                 = 0x87650075,
00335  
00336 
00337 [helpstring("Unknown attribute specified")]
00338                 E_META_INVALIDATTR                              = 0x87650080,
00339 [helpstring("Unknown aspect specified"          )]
00340                 E_META_INVALIDASPECT                    = 0x87650081,
00341 [helpstring("Access method conflicts with attribute type")]
00342                 E_MGA_ACCESS_TYPE                               = 0x87650082,
00343 [helpstring("Invalid value for enum attr")]
00344                 E_MGA_BAD_ENUMVALUE                             = 0x87650083,
00345 
00346 [helpstring("Reference %o is used for connections")]
00347                 E_MGA_REFPORTS_USED                             = 0x87650131,
00348 [helpstring("Node is not a physical, but inherited")]
00349                 E_MGA_VIRTUAL_NODE                              = 0x87650136,
00350 [helpstring("Bad GME position read/written")]
00351                 E_MGA_BAD_POSITIONVALUE                 = 0x87650137,
00352 [helpstring("Operation not allowed for root FCOs")]
00353                 E_MGA_ROOTFCO                                   = 0x87650138,
00354 [helpstring("Operation not allowed for non-root FCOs")]
00355                 E_MGA_NOT_ROOTOBJECT                    = 0x87650138,
00356 [helpstring("Collection parameter counts must match")]
00357                 E_MGA_BAD_COLLENGTH                             = 0x87650140,
00358 [helpstring("Bad/NULL metarole or metapart")]
00359                 E_MGA_INVALID_ROLE                              = 0x87650142,
00360 [helpstring("Object ID format error")]
00361                 E_MGA_BAD_ID                                    = 0x87650143,
00362 [helpstring("Non-root object, or derived into itself")]
00363                 E_MGA_NOT_DERIVABLE                             = 0x87650144,
00364 [helpstring("%o is not a member in set")]
00365                 E_MGA_OBJECT_NOT_MEMBER                 = 0x87650145,
00366 [helpstring("%o is not in a connectible position")]
00367                 E_MGA_NOT_CONNECTIBLE                   = 0x87650146,
00368 [helpstring("Role not specified")]
00369                 E_MGA_NO_ROLE                                   = 0x87650147,
00370 [helpstring("Connrole allowed number exceeded for %o")]
00371                 E_MGA_CONNROLE_USED                             = 0x87650148,
00372 [helpstring("Object is not derived")]
00373                 E_MGA_NOT_DERIVED                               = 0x87650149,
00374 [helpstring("Object is not an instance")]
00375                 E_MGA_NOT_INSTANCE                              = 0x87650150,
00376 [helpstring("Object is a type")]
00377                 E_MGA_INSTANCE                                  = 0x87650151,
00378 [helpstring("Object %o specified is not a reference")]
00379                 E_MGA_REFERENCE_EXPECTED                = 0x87650152,
00380 [helpstring("MgaFilter property format error")]
00381                 E_MGA_FILTERFORMAT                              = 0x87650153,
00382 [helpstring("Cannot generate a unique value")]
00383                 E_MGA_GEN_OUT_OF_SPACE                  = 0x87650154,
00384 [helpstring("Invalid reference target")]
00385                 E_MGA_INVALID_TARGET                    = 0x87650155,
00386 [helpstring("Derive chain too long")]
00387                 E_MGA_LONG_DERIVCHAIN                   = 0x87650156,
00388 [helpstring("Invalid changes in library")]
00389                 E_MGA_LIB_DIFF                                  = 0x87650157,
00390 
00391 [helpstring("Invalid event mask value")]
00392                 E_MGA_BAD_MASKVALUE                             = 0x87650170,
00393 [helpstring("Constraint violation")]
00394                 E_MGA_CONSTRAINT_VIOLATION              = 0x87657FFF,
00395 
00396 [helpstring("Errcode out of errcode range")]
00397                 E_MGA_ERRCODE_ERROR                             = 0x87658000
00398 
00399 } mgaerrors;
00400 // MGAERRORTABLE END
00401 
00402 [
00403         object,
00404         uuid(270B4F92-B17C-11D3-9AD1-00AA00B6FE26),
00405         dual,
00406         helpstring("IMgaProject Interface"),
00407         pointer_default(unique)
00408 ]
00409 interface IMgaProject : IDispatch
00410 {
00411 // Open, close et al.
00412         [ helpstring("method Create  (call when nothing is open)")] HRESULT Create([in]BSTR projectname, [in] BSTR paradigmname);
00413         [ helpstring("method CreateEx  (call when nothing is open)")] HRESULT CreateEx([in]BSTR projectname, [in] BSTR paradigmname, [in] VARIANT paradigmGUID);
00414 
00415         [ helpstring("method Open (call when nothing is open)")] HRESULT Open([in] BSTR projectname,[out, defaultvalue(0)] VARIANT_BOOL *ro_mode);
00416         [ helpstring("method OpenEx (call when nothing is open)")] 
00417         // paradigmGUID==true means open with the currently-registered paradigm
00418                 HRESULT OpenEx([in] BSTR projectname, [in] BSTR paradigmname, [in] VARIANT paradigmGUID);
00419         [ helpstring("method Close (call outside transaction)")] HRESULT Close([in, defaultvalue(0)] VARIANT_BOOL abort);
00420         [ helpstring("method Save (call when outside transaction)")] HRESULT Save([in, defaultvalue("")] BSTR save_as_conn, [in, defaultvalue(0)] VARIANT_BOOL keepoldname);
00421 
00422         [ helpstring("method CheckLocks (call when nothing is open)")] 
00423                         HRESULT CheckLocks([in] BSTR filename, [in, defaultvalue((VARIANT_BOOL)-1)] VARIANT_BOOL clearlocks);
00424 
00425         [propput, helpstring("property Preferences (call anytime)")] HRESULT Preferences([in] long prefmask);
00426         [propget, helpstring("property Preferences (call anytime)")] HRESULT Preferences([out,retval] long* prefmask);
00427         [propput, helpstring("property OperationsMask (call anytime)")] HRESULT OperationsMask([in] long opmask);
00428         [propget, helpstring("property OperationsMask (call anytime)")] HRESULT OperationsMask([out,retval] long* opmask);
00429 
00430 // Transactions, territory, undo/redo
00431         [ helpstring("method CreateTerritory (call outside transaction)")] 
00432                         HRESULT CreateTerritory([in] IMgaEventSink *handler, [out] IMgaTerritory **terr, [in, defaultvalue(0)] IMgaEventSink *rwhandler);
00433         [ helpstring("method CreateAddOn (call outside transaction)")] HRESULT CreateAddOn([in] IMgaEventSink *handler, [out] IMgaAddOn **addon);
00434 
00435         [ propget, helpstring("property AddOns")] 
00436                                 HRESULT AddOns([out, retval] IMgaAddOns **addons);
00437         [ propget, helpstring("property Territories")] 
00438                                 HRESULT Territories([out, retval] IMgaTerritories **terrs);
00439         [ helpstring("property EnableAllAutoAddOns (by default auto addon loading disabled)")] 
00440                                 HRESULT EnableAutoAddOns([in] VARIANT_BOOL bEnable);
00441         [ propget, helpstring("property AddOnComponents")] 
00442                                 HRESULT AddOnComponents([out, retval] IMgaComponents **comps);
00443         [ propget, helpstring("property ActiveTerritory: the one which opened a transaction")] 
00444                                 HRESULT ActiveTerritory([out, retval] IMgaTerritory **aterr);
00445 
00446         [ helpstring("method BeginTransaction ")] 
00447                                 HRESULT BeginTransaction([in] IMgaTerritory *terr, 
00448                                                                         [in, defaultvalue(TRANSACTION_GENERAL)] transactiontype_enum mode);
00449         [ helpstring("method BeginTransactionInNewTerr with Territory creation")] 
00450                                 HRESULT BeginTransactionInNewTerr([in, defaultvalue(TRANSACTION_GENERAL)] transactiontype_enum mode, [out, retval] IMgaTerritory **terr);
00451 
00452         [ propget, helpstring("property ProjectStatus mask bits: bit 0 set:project is open. bit 2 set: project has changed. bit 3 set: in transaction. bit 4 set: transaction is read only. bit 31 set: error state")] 
00453                                 HRESULT ProjectStatus([out, retval] long *stat);
00454 
00455         [ helpstring("method Notify: Send global notification")] HRESULT Notify([in] globalevent_enum event);
00456         [ helpstring("method CommitTransaction")] HRESULT CommitTransaction();
00457         [ helpstring("method AbortTransaction")] HRESULT AbortTransaction();
00458 
00459         [ helpstring("method CheckSupress")] HRESULT CheckSupress([in] VARIANT_BOOL mode);
00460         [ helpstring("method Undo (call outside transaction)")] HRESULT Undo();
00461         [ helpstring("method Redo (call outside transaction)")] HRESULT Redo();
00462         [ helpstring("method UndoRedoSize")] HRESULT UndoRedoSize([out] short *undosize, [out] short *redosize);
00463         [ helpstring("method FlushUndoQueue")] HRESULT FlushUndoQueue();
00464 
00465         [ helpstring("method UpdateSourceControlInfo, for users to ask the XML backend to update its current status")] 
00466         HRESULT UpdateSourceControlInfo([in] BSTR p_optionalID);
00467 
00468         [ helpstring( "method SourceControlActiveUsers, for showing a dialog with all potential commiters of a project")]
00469         HRESULT SourceControlActiveUsers();
00470 
00471         [ helpstring( "method SourceControlObjectOwner, for showing a dialog with the owner of a locked object")]
00472         HRESULT SourceControlObjectOwner( [in] BSTR p_optionalID);
00473 
00474 
00475 // Access to meta and project trees
00476         [propget, helpstring("property RootMeta: access root of meta tree")] 
00477                                                                         HRESULT RootMeta([out, retval] IMgaMetaProject **pVal);
00478         [propget, helpstring("property RootFolder: access root of model tree")] 
00479                                                                         HRESULT RootFolder([out, retval] IMgaFolder **pVal);
00480 
00481 // Global search on model tree
00482         [ helpstring("method CreateFilter")] HRESULT CreateFilter([out, retval] IMgaFilter **filter);
00483         [ helpstring("method AllFCOs")] HRESULT AllFCOs([in] IMgaFilter *filter, [out, retval] IMgaFCOs **returnset);
00484         [ helpstring("method GetObjectByID")] HRESULT GetObjectByID([in] ID_type id, [out, retval] IMgaObject **pVal);
00485         [ helpstring("method GetFCOByID")] HRESULT GetFCOByID([in] ID_type id, [out, retval] IMgaFCO **pVal);
00486 
00487         [ helpstring("method GetFCOsByName")] HRESULT GetFCOsByName([in] BSTR name, [out, retval] IMgaFCOs **pVal);
00488         [ helpstring("method GetFolderByPath")] HRESULT GetFolderByPath([in] BSTR path, [out, retval] IMgaFolder **pVal);
00489         [ helpstring("method EnumExtReferences: Get all ref objects referring from outside to this tree")] 
00490                                                                                         HRESULT EnumExtReferences([in] IMgaFCOs *fcos, [out, retval] IMgaFCOs **pVal);
00491 // Delimiter in the path is the slash character: '/'
00492 // searches based on name and kind: "/@MyFolder|kind=OneFolder/@MySubFolder|kind=AnotherFolder" (the project or root folder name must not be included)
00493 //       or based on plain name:    "/MyFolder/MySubFolder"
00494 //       or based on relid:         "/#1/#3"
00495 // these may be mixed like:         "/@MyFolder|kind=OneFolder|relpos=1/#2" which means that look for MyFolder, then select its child with Relid = 2
00496 // incoming path may contain 'misleading' relpos tokens as well: /@MyFolder|kind=OneFolder|relpos=1/@MySubFolder|kind=AnotherFolder|relpos=2" these are disregarded
00497 // If several objects are found, NULL is returned
00498 //
00499 // FCO::get_ObjectByPath ignores the leading '/'
00500         [ propget, helpstring("property ObjectByPath: path may contain /@names or /RelID-s")] 
00501                         HRESULT ObjectByPath([in] BSTR path, [out, retval] IMgaObject **pVal);
00502         [ propget, helpstring("property nthObjectByPath, returns the nth samename object if path not unique")] 
00503                         HRESULT NthObjectByPath([in] long n_th, [in] BSTR path, [out, retval] IMgaObject **pVal);
00504 
00505         [ helpstring("method GetTopLibraries")] HRESULT GetTopLibraries( [in] BSTR dispGuid, [out, retval] IMgaFolders **returnset);
00506 
00507 // Project properties
00508         [helpstring("method GetStatistics")] HRESULT GetStatistics([out, retval] BSTR *statstr);
00509         [propget, helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
00510         [propput, helpstring("property Name")] HRESULT Name([in] BSTR newval);
00511         [propget, helpstring("property Version")] HRESULT Version([out, retval] BSTR *pVal);
00512         [propput, helpstring("property Version")] HRESULT Version([in] BSTR newval);
00513         [propget, helpstring("property MetaName")] HRESULT MetaName([out, retval] BSTR *pVal);
00514         [propget, helpstring("property MetaGUID")] HRESULT MetaGUID([out, retval] VARIANT *pVal);
00515         [propget, helpstring("property MetaVersion")] HRESULT MetaVersion([out, retval] BSTR *pVal);
00516         [propget, helpstring("property GUID")] HRESULT GUID([out, retval] VARIANT *pVal);
00517         [propput, helpstring("property GUID")] HRESULT GUID([in] VARIANT newVal);
00518         [propget, helpstring("property CreateTime")] HRESULT CreateTime([out, retval] BSTR *pVal);
00519         [propget, helpstring("property ChangeTime")] HRESULT ChangeTime([out, retval] BSTR *pVal);
00520         [propget, helpstring("property Author")] HRESULT Author([out, retval] BSTR *pVal);
00521         [propput, helpstring("property Author")] HRESULT Author([in] BSTR newval);
00522         [propget, helpstring("property Comment")] HRESULT Comment([out, retval] BSTR *pVal);
00523         [propput, helpstring("property Comment")] HRESULT Comment([in] BSTR newVal);
00524 
00525         [propget, helpstring("property ProjectConnStr")] HRESULT ProjectConnStr([out, retval] BSTR *pVal);
00526         [propget, helpstring("property ParadigmConnStr")] HRESULT ParadigmConnStr([out, retval] BSTR *pVal);
00527 
00528         [propget, helpstring("property MetaObj: get the metaobject for a reference")] 
00529                                                                 HRESULT MetaObj([in] metaref_type mref, [out, retval] IMgaMetaBase **pVal);
00530         [helpstring("getter for property MetaObj: get the metaobject for a reference")] 
00531                                                                 HRESULT GetMetaObjDisp([in] metaref_type mref, [out, retval] IMgaMetaBase **pVal);
00532 
00533         [helpstring("method QueryProjectInfo (call anytime)")] 
00534                 HRESULT QueryProjectInfo([in] BSTR projectname, [out] long *mgaversion, 
00535                                                                  [out] BSTR *paradigmname, 
00536                                                                  [out] BSTR *paradigmversion, 
00537                                                                  [out] VARIANT *paradigmGUID,
00538                                                                  [out] VARIANT_BOOL *ro_mode);
00539 
00540         [ propget, helpstring("property Clients")] HRESULT Clients([out, retval] IMgaClients **clients);
00541         [ helpstring("method RegisterClient")] 
00542                                                                 HRESULT RegisterClient([in] BSTR name, [in] IDispatch *OLEServer, [out, retval] IMgaClient **client);
00543         [ helpstring("method GetClientByName")] HRESULT GetClientByName([in] BSTR name, [out, retval] IMgaClient **client);
00544 
00545         [ helpstring("method CreateTerritoryWithoutSink (call outside transaction)")] 
00546                         HRESULT CreateTerritoryWithoutSink([out] IMgaTerritory **terr);
00547 };
00548 
00549 [
00550         object,
00551         uuid(32D1F3A5-D276-11D3-9AD5-00AA00B6FE26),
00552         oleautomation,
00553         helpstring("IMgaEventSink: to be implemented by the client to be called back"),
00554         pointer_default(unique)
00555 ]
00556 interface IMgaEventSink : IUnknown
00557 {
00558         [ helpstring("GlobalEvent")] HRESULT GlobalEvent([in] globalevent_enum event);
00559         [ helpstring("ObjectEvent")] HRESULT ObjectEvent([in] IMgaObject * obj, [in] unsigned long eventmask, [in]  VARIANT v);
00560 };
00561         
00562 [
00563         object,
00564         uuid(80A6D661-D411-11D3-9AD5-00AA00B6FE26),
00565         dual,
00566         helpstring("IMgaAddOn Interface"),
00567         pointer_default(unique)
00568 ]
00569 interface IMgaAddOn : IDispatch
00570 {
00571         [ propget,  helpstring("property Priority")] HRESULT Priority([out, retval] long *pVal);
00572         [ propput,  helpstring("property Priority")] HRESULT Priority([in] long newVal);
00573         [ propput, helpstring("property EventMask (defaults to ALL)")] HRESULT EventMask([in] unsigned long eventmask);
00574         [ helpstring("method Destroy: disable further callbacks to this addon")] HRESULT Destroy();
00575 
00576         [ propget,  helpstring("property Project")] HRESULT Project([out, retval] IMgaProject **pVal);
00577         [ helpstring("Check if object belongs to a project")]   HRESULT CheckProject([in] IMgaProject *p_project);
00578 };
00579 
00580 
00581 
00582 [
00583         object,
00584         uuid(11BB02D9-2E2C-11D3-B36D-0060082DF884),
00585         oleautomation,
00586         helpstring("IMgaComponent Interface"),
00587         pointer_default(unique)
00588 
00589 ]
00590 interface IMgaComponent : IUnknown
00591 {
00592         [helpstring ("method Invoke, selectedobjs may be NULL")]
00593                 HRESULT Invoke([in] IMgaProject *project, [in] IMgaFCOs *selectedobjs, [in] long param);
00594         [helpstring("method Initialize")] 
00595                 HRESULT Initialize(IMgaProject *p);
00596         [helpstring("method Enable")] 
00597                 HRESULT Enable(VARIANT_BOOL newVal);
00598         [propget, helpstring("property InteractiveMode")] 
00599                 HRESULT InteractiveMode([out, retval] VARIANT_BOOL * enabled);
00600         [propput, helpstring("property InteractiveMode")] 
00601                 HRESULT InteractiveMode([in] VARIANT_BOOL enabled);
00602         [propget, helpstring("property ComponentName")] 
00603                 HRESULT ComponentName([out, retval] BSTR *pVal);
00604         [propget, helpstring("property ComponentType")] 
00605                 HRESULT ComponentType([out, retval] componenttype_enum *t);
00606         [propget, helpstring("property Paradigm")] 
00607                 HRESULT Paradigm([out, retval] BSTR *pVal);
00608 };
00609 
00610 
00611 [
00612         object,
00613         uuid(11BB44D9-2E2C-11D3-B36D-0060082DF884),
00614         oleautomation,
00615         helpstring("IMgaComponentEx Interface"),
00616         pointer_default(unique)
00617 
00618 ]
00619 interface IMgaComponentEx : IMgaComponent
00620 {
00621         [helpstring ("method InvokeEx, responsible for opening transaction. Selectedobjs may be NULL")]
00622                 HRESULT InvokeEx([in] IMgaProject *project, [in] IMgaFCO *currentobj, [in,out] IMgaFCOs *selectedobjs, [in] long param);
00623         [helpstring ("method ObjectsInvokeEx, responsible for opening transaction. Selectedobjs may be NULL")]
00624                 HRESULT ObjectsInvokeEx([in] IMgaProject *project, [in] IMgaObject *currentobj, [in,out] IMgaObjects *selectedobjs, [in] long param);
00625         [propget, helpstring("property ComponentProgID")] 
00626                 HRESULT ComponentProgID([out, retval] BSTR *pVal);
00627         [propput, helpstring("property ComponentParameter")] 
00628                 HRESULT ComponentParameter([in] BSTR name, [in] VARIANT newVal);
00629         [propget, helpstring("property ComponentParameter")] 
00630                 HRESULT ComponentParameter([in] BSTR name, [out, retval] VARIANT *pVal);
00631 };
00632 
00633 [
00634         object,
00635         uuid(F07EE1A2-2D53-449b-A2DA-45A1A9110E53),
00636         dual,
00637         helpstring("IMgaClient Interface"),
00638         pointer_default(unique)
00639 ]
00640 interface IMgaClient : IDispatch
00641 {
00642         [ propget,  helpstring("property Name")] HRESULT Name([out, retval] BSTR *pName);
00643         [ propget,  helpstring("property OLEServer")] HRESULT OLEServer([out, retval] IDispatch **pServer);
00644         [ propget,  helpstring("property Project")] HRESULT Project([out, retval] IMgaProject **pVal);
00645         [ helpstring("method Destroy: remove registered Client")] HRESULT Destroy();
00646 };
00647 
00648 
00649 
00650 
00651 /*
00652 [
00653         uuid(11B994D9-2E2C-11D3-B36D-0060082DF886),
00654         helpstring("IMgaDispComponent Interface"),
00655 
00656 ]
00657 dispinterface IMgaDispComponent {
00658         interface IMgaComponentEx;
00659 };
00660 */
00661 
00662 [       
00663         uuid(52871786-9C85-408f-A7D1-AE507905A540),
00664         helpstring("Dispatch interface for IMgaComponents") 
00665 ]
00666 dispinterface IMgaComponentDispatch
00667 {
00668         properties:
00669         [id(1)] VARIANT_BOOL InteractiveMode;
00670         [id(2)] BSTR ComponentName;
00671         [id(3)] LONG ComponentType;
00672         [id(4)] BSTR Paradigm;
00673         [id(5)] BSTR ComponentProgID;
00674         [id(6)] LONG Version;
00675 
00676         methods:
00677         [id(20)] void Invoke(IMgaProject *project, IMgaFCOs *selectedobjs, LONG param);
00678         [id(21)] void Initialize(IMgaProject *p);
00679         [id(22)] void Enable(VARIANT_BOOL newVal);
00680         [id(23)] void InvokeEx(IMgaProject *project, IMgaFCO *currentobj, IMgaFCOs *selectedobjs, LONG param);
00681         [id(24)] void ObjectsInvokeEx(IMgaProject *project, IMgaObject *currentobj, IMgaObjects *selectedobjs, LONG param);
00682         [id(25)] void SetComponentParameter(BSTR name, VARIANT newVal);
00683         [id(26)] VARIANT GetComponentParameter(BSTR name);
00684 };
00685 
00686 [
00687         object,
00688         uuid(32D1F3A3-D276-11D3-9AD5-00AA00B6FE26),
00689         dual,
00690         helpstring("IMgaTerritory Interface"),
00691         pointer_default(unique)
00692 ]
00693 interface IMgaTerritory : IDispatch
00694 {
00695         [ helpstring("method Flush: empty the territory")] HRESULT Flush();
00696         [ helpstring("method Destroy: empty and destroy the territory")] HRESULT Destroy();
00697         [ propput, helpstring("property EventMask (defaults to ALL)")] HRESULT EventMask([in] unsigned long eventmask);
00698         [ propput, helpstring("property RWEventMask (defaults to NONE)")] HRESULT RWEventMask([in] unsigned long eventmask);
00699         [ helpstring("Associate object with user data")] HRESULT Associate([in] IMgaObject *obj, [in] VARIANT userdata);
00700         [ helpstring("property OpenObj")] HRESULT OpenObj([in] IMgaObject *obj, [in, out] IMgaObject **newobj);
00701         [ helpstring("property OpenFCO")] HRESULT OpenFCO([in] IMgaFCO *obj, [in, out] IMgaFCO **newobj);
00702         [ helpstring("property OpenFCOs")] HRESULT OpenFCOs([in] IMgaFCOs *obj, [in, out] IMgaFCOs **newobj);
00703         [ helpstring("property CloseObj")] HRESULT CloseObj([in] IMgaObject *obj);
00704 
00705         [ propget,  helpstring("property Project")] HRESULT Project([out, retval] IMgaProject **pVal);
00706         [ helpstring("Check if object belongs to a project")]   HRESULT CheckProject([in] IMgaProject *project);
00707         [ helpstring("Set Namespace")] HRESULT SetNamespace( [in] BSTR pNmsp);
00708         [ helpstring("Get Namespace")] HRESULT GetNamespace( [out, retval] BSTR * pNmsp);
00709 };
00710 
00711 [
00712         object,
00713         uuid(32D1F3A7-D276-11D3-9AD5-00AA00B6FE26),
00714         dual,
00715         helpstring("IMgaObject Interface: an empty class used as a common base class for Mga objects"),
00716         pointer_default(unique)
00717 ]
00718 interface IMgaObject : IDispatch        {
00719         [propget, helpstring("property Status: always available")]      HRESULT Status([out, retval] long *p);
00720         [propget, helpstring("property IsWritable")]    HRESULT IsWritable([out, retval] VARIANT_BOOL *p);
00721         [propget, helpstring("property ID")]            HRESULT ID([out, retval] ID_type *pVal);
00722         [propget, helpstring("property Name")]          HRESULT Name([out, retval] BSTR *pVal);
00723         [propput, helpstring("property Name")]          HRESULT Name([in] BSTR newVal);
00724         [propget, helpstring("property AbsPath")]       HRESULT AbsPath([out, retval] BSTR *pVal);
00725         [propget, helpstring("property MetaBase")]      HRESULT MetaBase([out, retval] IMgaMetaBase **pVal);
00726         [propget, helpstring("property ObjType")]       HRESULT ObjType([out, retval] objtype_enum *pVal);
00727         [propget, helpstring("property Project")]   HRESULT Project([out, retval] IMgaProject **pVal);
00728         [propget, helpstring("property Territory")] HRESULT Territory([out, retval] IMgaTerritory **pVal);
00729         [propget, helpstring("property IsEqual")]   HRESULT IsEqual([in] IMgaObject *o, [out, retval] VARIANT_BOOL *pVal);
00730         [helpstring("getter for property IsEqual")]   HRESULT GetIsEqualDisp([in] IMgaObject *o, [out, retval] VARIANT_BOOL *pVal);
00731         [helpstring("method GetParent")] HRESULT GetParent([out] IMgaObject **pVal, [out, defaultvalue(0)] objtype_enum *objtype);
00732 
00733         [helpstring("Check if object belongs to a project")]    HRESULT CheckProject([in] IMgaProject *project);
00734         [helpstring("method DestroyObject")]            HRESULT DestroyObject();
00735         [helpstring("method Open: mode does not define access, sets locking type only (subsequents Open()-s are legal)")] 
00736                                                                                                 HRESULT Open([in, defaultvalue(OPEN_READ)] openmode mode);
00737         [helpstring("method Close: unlock object and discard from territory")] HRESULT Close();
00738 
00739         [helpstring("Associate: always available")] HRESULT Associate([in] VARIANT userdata);
00740         [propget, helpstring("Current Association value: always available")] HRESULT CurrentAssociation([out,retval] VARIANT *userdata);
00741         [helpstring("method SendEvent: see objectevent_enum definition for mask bit values")]
00742                                                                                                 HRESULT SendEvent([in] long mask);
00743         [propget, helpstring("property RelID")]         HRESULT RelID([out, retval] long *pVal);
00744         [propput, helpstring("property RelID")]         HRESULT RelID([in] long newVal);
00745         [propget, helpstring("property IsLibObject")] 
00746                                 HRESULT IsLibObject([out, retval] VARIANT_BOOL *pVal);
00747 
00748         [helpstring("method Check")]                            
00749                         HRESULT Check();
00750         [helpstring("method CheckTree")]                        
00751                         HRESULT CheckTree();
00752         [propput, helpstring("property Exempt")]        
00753                         HRESULT Exempt([in] VARIANT_BOOL newVal);
00754         [propget, helpstring("property Exempt")]        
00755                         HRESULT Exempt([out, retval] VARIANT_BOOL *pVal);
00756 
00757         [propget, helpstring("property ChildObjects")] 
00758                         HRESULT ChildObjects([out, retval] IMgaObjects **pVal);
00759         [propget, helpstring("property ChildObjectByRelID")] 
00760                         HRESULT ChildObjectByRelID([in] long relid, [out, retval] IMgaObject **pVal);
00761         [helpstring("getter for property ChildObjectByRelID")] 
00762                         HRESULT GetChildObjectByRelIDDisp([in] long relid, [out, retval] IMgaObject **pVal);
00763         [ propget, helpstring("property ObjectByPath: path may contain /@names or /RelID-s")] 
00764                         HRESULT ObjectByPath([in] BSTR path, [out, retval] IMgaObject **pVal);
00765         [helpstring("getter for property ObjectByPath: path may contain /@names or /RelID-s")] 
00766                         HRESULT GetObjectByPathDisp([in] BSTR path, [out, retval] IMgaObject **pVal);
00767         [ propget, helpstring("property nthObjectByPath, returns the nth samename object if path not unique")] 
00768                         HRESULT NthObjectByPath([in] long n_th, [in] BSTR path, [out, retval] IMgaObject **pVal);
00769         [helpstring("getter for property nthObjectByPath, returns the nth samename object if path not unique")] 
00770                         HRESULT GetNthObjectByPathDisp([in] long n_th, [in] BSTR path, [out, retval] IMgaObject **pVal);
00771         [helpstring("make an object and its subelements ReadOnly/ReadWrite")]
00772                         HRESULT PutReadOnlyAccessWithPropagate( [in] VARIANT_BOOL pReadOnly );
00773         [helpstring("make an object ReadOnly/ReadWrite")]
00774                         HRESULT PutReadOnlyAccess( [in] VARIANT_BOOL pReadOnly );
00775         [helpstring("ask about access rights to an object")]
00776                         HRESULT HasReadOnlyAccess( [out, retval] VARIANT_BOOL* pReadOnly );
00777 
00778         [ helpstring("GetGuid")] HRESULT GetGuid([in, out] long* l1, [in, out] long* l2, [in, out] long* l3, [in, out] long* l4);
00779         [ helpstring("PutGuid")] HRESULT PutGuid([in] long l1, [in] long l2, [in] long l3, [in] long l4);
00780         [ helpstring("GetGuid Dispatch compatible")] HRESULT GetGuidDisp([out, retval] BSTR *guid_str);
00781         [ helpstring("PutGuid Dispatch compatible")] HRESULT PutGuidDisp([in] BSTR guid_str);
00782 };
00783 
00784 
00785 [
00786         object,
00787         uuid(270B4F98-B17C-11D3-9AD1-00AA00B6FE26),
00788         dual,
00789         helpstring("IMgaFCO Interface"),
00790         pointer_default(unique)
00791 ]
00792 interface IMgaFCO : IMgaObject
00793 {
00794         [propget, helpstring("property Meta")]  HRESULT Meta([out, retval] IMgaMetaFCO **pVal);
00795 
00796         [propget, helpstring("property MetaRole")] HRESULT MetaRole([out, retval] IMgaMetaRole **pVal);
00797 
00798         [propget, helpstring("property ParentModel (null if root)")] HRESULT ParentModel([out, retval] IMgaModel **pVal);
00799         [propget, helpstring("property ParentFolder (null if non-root)")] HRESULT ParentFolder([out, retval] IMgaFolder **pVal);
00800 
00801 
00802         [propget, helpstring("property Parts")] HRESULT Parts([out, retval] IMgaParts **pVal);
00803         [propget, helpstring("property Part, NULL if not present in specified aspect")] 
00804                                 HRESULT Part([in] IMgaMetaAspect * asp, [out, retval] IMgaPart **pVal);
00805         [helpstring("getter for property Part, NULL if not present in specified aspect")] 
00806                                 HRESULT GetPartDisp([in] IMgaMetaAspect * asp, [out, retval] IMgaPart **pVal);
00807         [propget, helpstring("property PartByMetaPart")] 
00808                                 HRESULT PartByMetaPart([in] IMgaMetaPart * part, [out, retval] IMgaPart **pVal);
00809         [helpstring("getter for property PartByMetaPart")] 
00810                                 HRESULT GetPartByMetaPartDisp([in] IMgaMetaPart * part, [out, retval] IMgaPart **pVal);
00811 // TODO: GetPartByAspectName([in] BSTR *AspectName, [out, retval] IMgaPart **pVal);
00812 
00813 
00814 // Style #1: some may like it better
00815         [propget, helpstring("property Attributes: includes virtual attributes")] 
00816                                                                                 HRESULT Attributes([out, retval] IMgaAttributes **pVal);
00817         [propget, helpstring("property Attribute: return an attribute identified by its meta")] 
00818                                                                                 HRESULT Attribute([in] IMgaMetaAttribute *meta, [out, retval] IMgaAttribute **pVal);
00819         [helpstring("getter for property Attribute: return an attribute identified by its meta")] 
00820                                                                                 HRESULT GetAttributeDisp([in] IMgaMetaAttribute *meta, [out, retval] IMgaAttribute **pVal);
00821 
00822 // Style #2: probably more convenient attribute access, also faster if an attr is used only once
00823         [propget, id(DISPID_VALUE), helpstring("property AttributeByName")] HRESULT AttributeByName([in] BSTR name, [out, retval] VARIANT *pVal);
00824         [propput, id(DISPID_VALUE), helpstring("property AttributeByName")] HRESULT AttributeByName([in] BSTR name, [in] VARIANT newval);
00825         [helpstring("getter for property AttributeByName")] HRESULT GetAttributeByNameDisp([in] BSTR name, [out, retval] VARIANT *pVal);
00826         [helpstring("setter for property AttributeByName")] HRESULT SetAttributeByNameDisp([in] BSTR name, [in] VARIANT newval);
00827         [propget, helpstring("property StrAttrByName")] HRESULT StrAttrByName([in] BSTR name, [out, retval] BSTR *pVal);
00828         [propput, helpstring("property StrAttrByName")] HRESULT StrAttrByName([in] BSTR name, [in] BSTR newval);
00829         [helpstring("getter for property StrAttrByName")] HRESULT GetStrAttrByNameDisp([in] BSTR name, [out, retval] BSTR *pVal);
00830         [helpstring("setter for property StrAttrByName")] HRESULT SetStrAttrByNameDisp([in] BSTR name, [in] BSTR newval);
00831         [propget, helpstring("property IntAttrByName")] HRESULT IntAttrByName([in] BSTR name, [out, retval] long *pVal);
00832         [propput, helpstring("property IntAttrByName")] HRESULT IntAttrByName([in] BSTR name, [in] long newval);
00833         [helpstring("getter for property IntAttrByName")] HRESULT GetIntAttrByNameDisp([in] BSTR name, [out, retval] long *pVal);
00834         [helpstring("setter for property IntAttrByName")] HRESULT SetIntAttrByNameDisp([in] BSTR name, [in] long newval);
00835         [propget, helpstring("property FloatAttrByName")] HRESULT FloatAttrByName([in] BSTR name, [out, retval] double *pVal);
00836         [propput, helpstring("property FloatAttrByName")] HRESULT FloatAttrByName([in] BSTR name, [in] double newval);
00837         [helpstring("getter for property FloatAttrByName")] HRESULT GetFloatAttrByNameDisp([in] BSTR name, [out, retval] double *pVal);
00838         [helpstring("setter for property FloatAttrByName")] HRESULT SetFloatAttrByNameDisp([in] BSTR name, [in] double newval);
00839         [propget, helpstring("property BoolAttrByName")] HRESULT BoolAttrByName([in] BSTR name, [out, retval] VARIANT_BOOL *pVal);
00840         [propput, helpstring("property BoolAttrByName")] HRESULT BoolAttrByName([in] BSTR name, [in] VARIANT_BOOL newval);
00841         [helpstring("getter for property BoolAttrByName")] HRESULT GetBoolAttrByNameDisp([in] BSTR name, [out, retval] VARIANT_BOOL *pVal);
00842         [helpstring("setter for property BoolAttrByName")] HRESULT SetBoolAttrByNameDisp([in] BSTR name, [in] VARIANT_BOOL newval);
00843         [propget, helpstring("property RefAttrByName")] HRESULT RefAttrByName([in] BSTR name, [out, retval] IMgaFCO **pVal);
00844         [propput, helpstring("property RefAttrByName")] HRESULT RefAttrByName([in] BSTR name, [in] IMgaFCO* newval);
00845         [helpstring("getter for property RefAttrByName")] HRESULT GetRefAttrByNameDisp([in] BSTR name, [out, retval] IMgaFCO **pVal);
00846         [helpstring("setter for property RefAttrByName")] HRESULT SetRefAttrByNameDisp([in] BSTR name, [in] IMgaFCO* newval);
00847         [helpstring("Remove attribute for this object, expose value of base object or default")] 
00848                                                                                         HRESULT ClearAttrByName([in] BSTR name);
00849 
00850 
00851         [id(0x540), propget, helpstring("property RegistryNode")] 
00852                 HRESULT RegistryNode([in] BSTR path, [out, retval] IMgaRegNode **pVal);
00853         [helpstring("getter for property RegistryNode")] 
00854                 HRESULT GetRegistryNodeDisp([in] BSTR path, [out, retval] IMgaRegNode **pVal);
00855         [id(0x541), propget, helpstring("property Registry")] 
00856                 HRESULT Registry([in, defaultvalue(0)] VARIANT_BOOL virtuals, [out, retval] IMgaRegNodes **pVal);
00857         [helpstring("getter for property Registry")] 
00858                 HRESULT GetRegistryDisp([in, defaultvalue(0)] VARIANT_BOOL virtuals, [out, retval] IMgaRegNodes **pVal);
00859         [id(0x542), propget, helpstring("property RegistryValue")] 
00860                 HRESULT RegistryValue([in] BSTR path, [out, retval] BSTR *pVal);
00861         [id(0x542), propput, helpstring("property RegistryValue")] 
00862                 HRESULT RegistryValue([in] BSTR path, [in] BSTR newval);
00863         [helpstring("getter for property RegistryValue")] 
00864                 HRESULT GetRegistryValueDisp([in] BSTR path, [out, retval] BSTR *pVal);
00865         [helpstring("setter for property RegistryValue")] 
00866                 HRESULT SetRegistryValueDisp([in] BSTR path, [in] BSTR newval);
00867 
00868         [id(0x544), propget, helpstring("property Constraints")] 
00869                 HRESULT Constraints([in] VARIANT_BOOL includemeta, [out, retval] IMgaConstraints **pVal);
00870         [helpstring("getter for property Constraints")] 
00871                 HRESULT GetConstraintsDisp([in] VARIANT_BOOL includemeta, [out, retval] IMgaConstraints **pVal);
00872         [id(0x545), helpstring("method AddConstraint")] 
00873                 HRESULT AddConstraint([in] IMgaConstraint *constraint);
00874         [id(0x546), helpstring("method DefineConstraint")] 
00875                 HRESULT DefineConstraint([in] BSTR name, [in] long mask, [in] BSTR expr, [out] IMgaConstraint **nconstraint);
00876 
00877 //      [ helpstring("method GetBaseType  BaseType, ImmediateBase, IsInstance [all may be NULL]")] 
00878 //                      HRESULT GetBaseType([out] IMgaFCO ** basetype, [out] IMgaFCO ** ibase, [out] VARIANT_BOOL *isinst);
00879         [propget, helpstring("property DerivedFrom (returns NULL if object is not derived)")] 
00880                                 HRESULT DerivedFrom([out, retval] IMgaFCO **pVal);
00881         [propget, helpstring("property DerivedObjects")] 
00882                                 HRESULT DerivedObjects([out, retval] IMgaFCOs **pVal);
00883         [propget, helpstring("property Type (succeeds only for instances)")] 
00884                                 HRESULT Type([out, retval] IMgaFCO **pVal);
00885         [propget, helpstring("property BaseType (fails for all instances; returns NULL if object is not derived)")] 
00886                                 HRESULT BaseType([out, retval] IMgaFCO **pVal);
00887         [propget, helpstring("property ArcheType (returns NULL if object is not derived)")] 
00888                                 HRESULT ArcheType([out, retval] IMgaFCO **pVal);
00889         [propget, helpstring("property IsInstance (also returns false for non-derived objects)")] 
00890                                 HRESULT IsInstance([out, retval] VARIANT_BOOL *pVal);
00891         [propget, helpstring("property IsPrimaryDerived (false if derived along with its parent, or if not derived at all)")] 
00892                                 HRESULT IsPrimaryDerived([out, retval] VARIANT_BOOL *pVal);
00893         [ helpstring("method AttachToArcheType")] 
00894                                 HRESULT AttachToArcheType([in] IMgaFCO *newtype, [in] VARIANT_BOOL instance);
00895         [ helpstring("method DetachFromArcheType")] 
00896                                 HRESULT DetachFromArcheType();
00897 
00898         [ helpstring("Get Abspath")] HRESULT GetAbsMetaPath([in, out] BSTR *abspath);
00899         [ helpstring("Get Relpath")] HRESULT GetRelMetaPath([in] IMgaFCO *begfco, [in, out] BSTR *relpath, [in, defaultvalue(0)] IMgaFCOs *refs);
00900 
00901         [propget, helpstring("property PartOfConns")]   HRESULT PartOfConns([out, retval] IMgaConnPoints **pVal);
00902         [propget, helpstring("property MemberOfSets")]  HRESULT MemberOfSets([out, retval] IMgaFCOs **pVal);
00903         [propget, helpstring("property ReferencedBy")]  HRESULT ReferencedBy([out, retval] IMgaFCOs **pVal);
00904 
00905 
00906         [ helpstring("method CreateCollection")]        HRESULT CreateCollection([in,out] IMgaFCOs **pVal);
00907 
00908         [propget, helpstring("property RootFCO")] 
00909                                 HRESULT RootFCO([out, retval] IMgaFCO **pVal);
00910 };
00911 /*
00912 [
00913         object,
00914         uuid(270B4F94-B17C-11D3-9AD1-00AA00B6FE26),
00915         dual,
00916         helpstring("IMgaContainer Interface"),
00917         pointer_default(unique)
00918 ]
00919 
00920 interface IMgaContainer : IMgaFCO
00921 {
00922         [propget, helpstring("property ChildFCOs")] HRESULT ChildFCOs([out, retval] IMgaFCOs **pVal);
00923         [propget, helpstring("property ChildFCO")] HRESULT ChildFCO([in] BSTR, [out, retval] IMgaFCO **pVal);
00924         [ helpstring("method GetDescendantFCOs: recursive search")] HRESULT GetDescendantFCOs([in] IMgaFilter*, [out] IMgaFCOs **);
00925         [ helpstring("method GetChildFCOsOfKind: non recursive search")] HRESULT GetChildrenOfKind([in] BSTR, [out] IMgaFCOs **);
00926 };
00927 */
00928 
00929 [
00930         object,
00931         uuid(270B4F96-B17C-11D3-9AD1-00AA00B6FE26),
00932         dual,
00933         helpstring("IMgaFolder: these are not really FCO-s, so implement only part of the functions from IMgaFCO!!!"),
00934         pointer_default(unique)
00935 ]
00936 interface IMgaFolder : IMgaObject
00937 {
00938         [propget, helpstring("property MetaFolder")] HRESULT MetaFolder([out, retval] IMgaMetaFolder **pVal);
00939         [propget, helpstring("property ParentFolder")] HRESULT ParentFolder([out, retval] IMgaFolder **pVal);
00940 
00941         [propget, helpstring("property ChildFolders")] HRESULT ChildFolders([out, retval] IMgaFolders **pVal);
00942         [ helpstring("method CreateFolder")] HRESULT CreateFolder([in] IMgaMetaFolder *meta, [out, retval] IMgaFolder **nf);
00943         [ helpstring("method CreateRootObject")] HRESULT CreateRootObject([in] IMgaMetaFCO* meta, [out, retval] IMgaFCO **nobj);
00944         [ helpstring("method DeriveRootObject")] HRESULT DeriveRootObject([in] IMgaFCO* base, [in] VARIANT_BOOL instance, [out, retval] IMgaFCO **nobj);
00945 
00946         [id(0x540), propget, helpstring("property RegistryNode")] 
00947                 HRESULT RegistryNode([in] BSTR path, [out, retval] IMgaRegNode **pVal);
00948         [helpstring("getter for property RegistryNode")] 
00949                 HRESULT GetRegistryNodeDisp([in] BSTR path, [out, retval] IMgaRegNode **pVal);
00950         [id(0x541), propget, helpstring("property Registry")] 
00951                 HRESULT Registry([in, defaultvalue(0)] VARIANT_BOOL virtuals, [out, retval] IMgaRegNodes **pVal);
00952         [helpstring("getter for property Registry")] 
00953                 HRESULT GetRegistryDisp([in, defaultvalue(0)] VARIANT_BOOL virtuals, [out, retval] IMgaRegNodes **pVal);
00954         [id(0x542), propget, helpstring("property RegistryValue")] 
00955                 HRESULT RegistryValue([in] BSTR path, [out, retval] BSTR *pVal);
00956         [helpstring("getter for property RegistryValue")] 
00957                 HRESULT GetRegistryValueDisp([in] BSTR path, [out, retval] BSTR *pVal);
00958         [id(0x542), propput, helpstring("property RegistryValue")] 
00959                 HRESULT RegistryValue([in] BSTR path, [in] BSTR newval);
00960         [helpstring("setter for property RegistryValue")] 
00961                 HRESULT SetRegistryValueDisp([in] BSTR path, [in] BSTR newval);
00962 
00963         [id(0x544), propget, helpstring("property Constraints")] 
00964                 HRESULT Constraints([in] VARIANT_BOOL includemeta, [out, retval] IMgaConstraints **pVal);
00965         [helpstring("getter for property Constraints")] 
00966                 HRESULT GetConstraintsDisp([in] VARIANT_BOOL includemeta, [out, retval] IMgaConstraints **pVal);
00967         [id(0x545), helpstring("method AddConstraint")] 
00968                 HRESULT AddConstraint([in] IMgaConstraint *constraint);
00969         [id(0x546), helpstring("method DefineConstraint")] 
00970                 HRESULT DefineConstraint([in] BSTR name, [in] long mask, [in] BSTR expr, [out] IMgaConstraint **nconstraint);
00971 
00972         [id(0x551), helpstring("method MoveFCOs")] 
00973                 HRESULT MoveFCOs([in] IMgaFCOs *to_copy, [out] IMgaFCOs **objs);
00974         [id(0x552), helpstring("method CopyFCOs")] 
00975                 HRESULT CopyFCOs([in] IMgaFCOs *to_move, [out] IMgaFCOs **objs);
00976         [id(0x561), helpstring("method MoveFolders")] 
00977                 HRESULT MoveFolders([in] IMgaFolders *to_copy, [out] IMgaFolders **objs);
00978         [id(0x562), helpstring("method CopyFolders")] 
00979                 HRESULT CopyFolders([in] IMgaFolders *to_move, [out] IMgaFolders **objs);
00980         [id(0x563), helpstring("method MarkParent")] 
00981                 HRESULT RefreshParent([in] IMgaFolder *folder);
00982 
00983 // Container methods and properties
00984         [id(0x553), propget, helpstring("property ChildFCOs")] 
00985                 HRESULT ChildFCOs([out, retval] IMgaFCOs **pVal);
00986         [id(0x554),propget, helpstring("property ChildFCO, return NULL if not found")] 
00987                 HRESULT ChildFCO([in] BSTR name, [out, retval] IMgaFCO **pVal);
00988         [helpstring("getter for property ChildFCO, return NULL if not found")] 
00989                 HRESULT GetChildFCODisp([in] BSTR name, [out, retval] IMgaFCO **pVal);
00990         [id(0x555), helpstring("method GetDescendantFCOs: recursive search")] 
00991                 HRESULT GetDescendantFCOs([in] IMgaFilter *filter, [out, retval] IMgaFCOs **returnset);
00992         [id(0x556), helpstring("method GetChildFCOsOfKind: non recursive search")] 
00993                 HRESULT GetChildrenOfKind([in] BSTR kindname, [out, retval] IMgaFCOs **returnset);
00994 
00995         [id(0x560), propget, helpstring("property ChildRelIDCounter")] 
00996                 HRESULT ChildRelIDCounter([out, retval] long *pVal);
00997         [id(0x560), propput, helpstring("property ChildRelIDCounter")] 
00998                 HRESULT ChildRelIDCounter([in] long pVal);
00999 //lastid: 0x563
01000 
01001         [ helpstring("method AttachLibrary")] HRESULT AttachLibrary([in] BSTR connstring, [out] IMgaFolder **nf);
01002         [ helpstring("method RefreshLibrary")] HRESULT RefreshLibrary([in] BSTR connstring);
01003         [ propget, helpstring("method LibraryName")] HRESULT LibraryName([out, retval] BSTR *connstring);
01004         [ propput, helpstring("method LibraryName")] HRESULT LibraryName([in] BSTR connstring);
01005 
01006         [ helpstring("method AttachLibrary with Ungroup option (aka Optimization)")] 
01007                 HRESULT AttachLibraryV3([in] BSTR connstring, [in] VARIANT_BOOL ungroup, [out, retval] IMgaFolder **nf);
01008         [ helpstring("method RefreshLibrary with Ungroup option (aka Optimization)")] 
01009                 HRESULT RefreshLibraryV3([in] BSTR connstring, [in] VARIANT_BOOL ungroup, [out, retval] long* numOfErrors);
01010 
01011         [ helpstring("method for getting those libraries which are virtually included by this")] 
01012                 HRESULT GetVirtuallyIncludes( [out, retval] IMgaFolders** pDep);
01013         [ helpstring("method for getting those libraries which virtually include this")] 
01014                 HRESULT GetVirtuallyIncludedBy( [out, retval] IMgaFolders** pDep);
01015         [ helpstring("method for setting those libraries which are virtually included by this")] 
01016                 HRESULT SetVirtuallyIncludes( [in] IMgaFolders* pDep);
01017         [ helpstring("method for setting those libraries which virtually include this")] 
01018                 HRESULT SetVirtuallyIncludedBy( [in] IMgaFolders* pDep);
01019 
01020 // Dispatch compatible copy/move
01021         [helpstring("method MoveFCO through Dispatch")]
01022                 HRESULT MoveFCODisp([in] IMgaFCO *to_copy, [out, retval] IMgaFCO **obj);
01023         [helpstring("method CopyFCO through Dispatch")]
01024                 HRESULT CopyFCODisp([in] IMgaFCO *to_move, [out, retval] IMgaFCO **obj);
01025         [helpstring("method MoveFolder through Dispatch")]
01026                 HRESULT MoveFolderDisp([in] IMgaFolder *to_copy, [out, retval] IMgaFolder **obj);
01027         [helpstring("method CopyFolder through Dispatch")]
01028                 HRESULT CopyFolderDisp([in] IMgaFolder *to_move, [out, retval] IMgaFolder **obj);
01029 
01030 // Source control
01031         [ helpstring("method GetSourceControlInfo, to find out current status of file")] 
01032         HRESULT GetSourceControlInfo( [out, retval] long * scInfo);
01033 };
01034 
01035 [
01036         object,
01037         uuid(270B4F9A-B17C-11D3-9AD1-00AA00B6FE26),
01038         dual,
01039         helpstring("IMgaModel Interface"),
01040         pointer_default(unique)
01041 ]
01042 interface IMgaModel : IMgaFCO
01043 {
01044         [ helpstring("method CreateChildObject")] HRESULT CreateChildObject([in] IMgaMetaRole *meta, [out, retval] IMgaFCO **newobj);
01045         [ helpstring("method DeriveChildObject")] HRESULT DeriveChildObject([in] IMgaFCO *base, 
01046                                                                                         [in] IMgaMetaRole *Role, [in] VARIANT_BOOL instance, [out, retval] IMgaFCO **newobj);
01047 
01048         [propget, helpstring("property ChildDerivedFrom")] HRESULT ChildDerivedFrom([in] IMgaFCO *baseobj, [out, retval] IMgaFCO **pVal);
01049 
01050         [helpstring("getter for property ChildDerivedFrom")] HRESULT GetChildDerivedFromDisp([in] IMgaFCO *baseobj, [out, retval] IMgaFCO **pVal);
01051 
01052         [propget, helpstring("property AspectParts")] 
01053                                         HRESULT AspectParts([in] IMgaMetaAspect * asp, [in] unsigned int filter, [out, retval] IMgaParts **pVal);
01054         [helpstring("getter for property AspectParts")] 
01055                                         HRESULT GetAspectPartsDisp([in] IMgaMetaAspect * asp, [in] unsigned int filter, [out, retval] IMgaParts **pVal);
01056 
01057         [ helpstring("method CreateSimpleConn")] 
01058                                         HRESULT CreateSimpleConn([in] IMgaMetaRole *meta, [in] IMgaFCO *Src, [in] IMgaFCO *Dst,
01059                                                                                          [in] IMgaFCOs *srcrefs, [in] IMgaFCOs *dstrefs, [out, retval] IMgaFCO **newobj);
01060         [ helpstring("method CreateReference")] 
01061                                         HRESULT CreateReference([in] IMgaMetaRole *meta, [in] IMgaFCO *Target, [out, retval] IMgaFCO **newobj);
01062         [ helpstring("method AddInternalConnections")] HRESULT AddInternalConnections([in] IMgaFCOs *inobjs, [out, retval] IMgaFCOs **outobjs);
01063 
01064         [id(0x551), helpstring("method MoveFCOs")] 
01065                 HRESULT MoveFCOs([in] IMgaFCOs * to_copy, [in] IMgaMetaRoles *destroles, [out] IMgaFCOs **objs);
01066         [id(0x552), helpstring("method CopyFCOs")] 
01067                 HRESULT CopyFCOs([in] IMgaFCOs * to_move, [in] IMgaMetaRoles *destroles, [out] IMgaFCOs **objs);
01068 
01069 
01070 // Container methods and properties
01071         [id(0x553), propget, helpstring("property ChildFCOs")] 
01072                 HRESULT ChildFCOs([out, retval] IMgaFCOs **pVal);
01073         [id(0x554),propget, helpstring("property ChildFCO, return NULL if not found")] 
01074                 HRESULT ChildFCO([in] BSTR name, [out, retval] IMgaFCO **pVal);
01075         [helpstring("getter for property ChildFCO, return NULL if not found")] 
01076                 HRESULT GetChildFCODisp([in] BSTR name, [out, retval] IMgaFCO **pVal);
01077         [id(0x555), helpstring("method GetDescendantFCOs: recursive search")] 
01078                 HRESULT GetDescendantFCOs([in] IMgaFilter *filter, [out, retval] IMgaFCOs **returnset);
01079         [id(0x556), helpstring("method GetChildFCOsOfKind: non recursive search")] 
01080                 HRESULT GetChildrenOfKind([in] BSTR kindname, [out, retval] IMgaFCOs **returnset);
01081 
01082         [id(0x560), propget, helpstring("property ChildRelIDCounter")] 
01083                 HRESULT ChildRelIDCounter([out, retval] long *pVal);
01084         [id(0x560), propput, helpstring("property ChildRelIDCounter")] 
01085                 HRESULT ChildRelIDCounter([in] long pVal);
01086 
01087 // Dispatch compatible connection creation
01088         [helpstring("method CreateSimpleConn through Dispatch")] 
01089                 HRESULT CreateSimpleConnDisp([in] IMgaMetaRole *meta, [in] IMgaFCO *Src, [in] IMgaFCO *Dst,
01090                                                          [in] IMgaFCO *Srcref, [in] IMgaFCO *Dstref, [out, retval] IMgaFCO **newobj);
01091 
01092         [helpstring("method CreateSimpleConn through Dispatch")] 
01093                 HRESULT CreateSimplerConnDisp([in] IMgaMetaRole *meta, [in] IMgaFCO *Src, [in] IMgaFCO *Dst, [out, retval] IMgaFCO **newobj);
01094 
01095 // Dispatch compatible copy/move
01096         [helpstring("method MoveFCO through Dispatch")] 
01097                 HRESULT MoveFCODisp([in] IMgaFCO * to_copy, [in] IMgaMetaRole *destrole, [out, retval] IMgaFCO **obj);
01098         [helpstring("method CopyFCO through Dispatch")] 
01099                 HRESULT CopyFCODisp([in] IMgaFCO * to_move, [in] IMgaMetaRole *destrole, [out, retval] IMgaFCO **obj);
01100 
01101 
01102 // Source control
01103         [ helpstring("method GetSourceControlInfo, to find out current status of file")] 
01104         HRESULT GetSourceControlInfo( [out, retval] long * scInfo);
01105 };
01106 
01107 [
01108         object,
01109         uuid(270B4F9C-B17C-11D3-9AD1-00AA00B6FE26),
01110         dual,
01111         helpstring("IMgaAtom Interface"),
01112         pointer_default(unique)
01113 ]
01114 interface IMgaAtom : IMgaFCO
01115 {
01116 };
01117 
01118 [
01119         object,
01120         uuid(270B4F9E-B17C-11D3-9AD1-00AA00B6FE26),
01121         dual,
01122         helpstring("IMgaPart Interface"),
01123         pointer_default(unique)
01124 ]
01125 
01126 interface IMgaPart : IDispatch
01127 {
01128         [propget, helpstring("property Model")] HRESULT Model([out, retval] IMgaModel **pVal);
01129         [propget, helpstring("property Meta")] HRESULT Meta([out, retval] IMgaMetaPart **pVal);
01130         [propget, helpstring("property MetaAspect")] HRESULT MetaAspect([out, retval] IMgaMetaAspect **pVal);
01131         [propget, helpstring("property MetaRole")] HRESULT MetaRole([out, retval] IMgaMetaRole **pVal);
01132         [propget, helpstring("property FCO")] HRESULT FCO([out, retval] IMgaFCO **pVal);
01133         [propget, helpstring("property AccessMask: primary, secondary and/or port")] HRESULT AccessMask([out, retval] long *pVal);
01134 
01135         [propget, helpstring("property RegistryMode")] HRESULT RegistryMode([out, retval] VARIANT_BOOL *own);
01136         [propput, helpstring("property RegistryMode")] HRESULT RegistryMode([in] VARIANT_BOOL own);
01137         [propget, helpstring("property RegistryNode")] HRESULT RegistryNode([in] BSTR path, [out, retval] IMgaRegNode **pVal);
01138         [helpstring("getter for property RegistryNode")] HRESULT GetRegistryNodeDisp([in] BSTR path, [out, retval] IMgaRegNode **pVal);
01139         [propget, helpstring("property Registry")] 
01140                 HRESULT Registry([in, defaultvalue(0)] VARIANT_BOOL virtuals, [out, retval] IMgaRegNodes **pVal);
01141         [helpstring("getter for property Registry")] 
01142                 HRESULT GetRegistryDisp([in, defaultvalue(0)] VARIANT_BOOL virtuals, [out, retval] IMgaRegNodes **pVal);
01143         [propget, helpstring("property RegistryValue")] HRESULT RegistryValue([in] BSTR path, [out, retval] BSTR *pVal);
01144         [propput, helpstring("property RegistryValue")] HRESULT RegistryValue([in] BSTR path, [in] BSTR newval);
01145         [helpstring("getter for property RegistryValue")] HRESULT GetRegistryValueDisp([in] BSTR path, [out, retval] BSTR *pVal);
01146         [helpstring("setter for property RegistryValue")] HRESULT SetRegistryValueDisp([in] BSTR path, [in] BSTR newval);
01147 
01148 
01149         [helpstring("method GetGmeAttrs")] HRESULT GetGmeAttrs([out] BSTR *Icon, [out] long *xpos, [out] long *ypos);
01150         [helpstring("method SetGmeAttrs")] HRESULT SetGmeAttrs([in] BSTR Icon, [in] long xpos, [in] long ypos);
01151 };
01152 
01153 [
01154         object,
01155         uuid(83BA3233-B758-11D3-ABAE-000000000000),
01156         dual,
01157         helpstring("IMgaReference Interface"),
01158         pointer_default(unique)
01159 ]
01160 interface IMgaReference : IMgaFCO
01161 {
01162         [propget, helpstring("property Referred")] HRESULT Referred([out, retval] IMgaFCO * *pVal);
01163         [propput, helpstring("property Referred")] HRESULT Referred([in] IMgaFCO * newVal);
01164         [propget, helpstring("property RefAspect: allways NULL for ref's to non-models, and may also be NULL for model refs")] 
01165                                                                                                 HRESULT RefAspect([out, retval] IMgaMetaAspect **pVal);
01166         [propput, helpstring("property RefAspect: NOP for non-model refs")] 
01167                                                                                                 HRESULT RefAspect([in] IMgaMetaAspect * newVal);
01168 
01169         [propget, helpstring("property UsedByConns: get ConnPoints that connect to this Reference's RefPorts")]
01170         HRESULT UsedByConns([out, retval] IMgaConnPoints **pVal);
01171 /*
01172         [propget, helpstring("property RefPorts")] HRESULT RefPorts([out, retval] IMgaRefPorts **pVal);
01173         [propget, helpstring("property RefPortFor")] HRESULT RefPortFor([in] IMgaFCO* target, [out, retval] IMgaRefPorts *pVal);
01174 */
01175         [id(0x580), helpstring("method CompareToBase: returns 0 if match found")] 
01176                 HRESULT CompareToBase([out] short *status);
01177         [id(0x581), helpstring("method RevertToBase")] 
01178                 HRESULT RevertToBase();
01179 
01180         // Dispatch compatible method, similar to Referred = 0
01181         [helpstring("Clear Reference")] HRESULT ClearRef();
01182 };
01183 
01184 /*
01185 [
01186         object,
01187         uuid(),
01188         dual,
01189         helpstring("IMgaRefPort Interface"),
01190         pointer_default(unique)
01191 ]
01192 interface IMgaRefPort : IDispatch
01193 {
01194         [propget, helpstring("property Reference: the reference the port belongs to")] 
01195                 HRESULT Reference([out, retval] IMgaFCO **pVal);
01196         [propget, helpstring("property Target: the atom this port represents")]  
01197                 HRESULT Target([out, retval] IMgaFCO **pVal);
01198         [propget, helpstring("property PointsTo: the atom or port immediately referred")]  
01199                 HRESULT PointsTo([out, retval] IMgaFCO **pVal);
01200         [propget, helpstring("property Visible")] 
01201                 HRESULT Visible([out, retval] VARIANT_BOOL *pVal);
01202         [propput, helpstring("property Visible")] 
01203                 HRESULT Visible([out, retval] VARIANT_BOOL newVal);
01204 };
01205 */
01206 
01207 
01208 [
01209         object,
01210         uuid(83BA3235-B758-11D3-ABAE-000000000000),
01211         dual,
01212         helpstring("IMgaSet Interface"),
01213         pointer_default(unique)
01214 ]
01215 interface IMgaSet : IMgaFCO
01216 {
01217         [helpstring("method AddMember")] HRESULT AddMember([in] IMgaFCO *mem);
01218         [helpstring("method RemoveMember")] HRESULT RemoveMember([in] IMgaFCO *member);
01219         [helpstring("method RemoveAll")] HRESULT RemoveAll();
01220         [propget, helpstring("property Members")] HRESULT Members([out, retval] IMgaFCOs **pVal);
01221         [propget, helpstring("property IsMember")] HRESULT IsMember([in] IMgaFCO *obj, [out, retval] VARIANT_BOOL *pVal);
01222 
01223         [id(0x580), helpstring("method CompareToBase; all elements are compared; 0 if all match")] 
01224                         HRESULT CompareToBase([out] short *status);
01225         [id(0x581), helpstring("method RevertToBase; all elements are reverted")] 
01226                         HRESULT RevertToBase();
01227 /*
01228         [helpstring("method CompareToBase; if elem is null, all elements are compared")] 
01229                         HRESULT CompareToBase([in, defaultvalue(0)] IMgaFCO *elem, [out] short *status);
01230         [helpstring("method RevertToBase; if elem is null, all elements are reverted")] 
01231                         HRESULT RevertToBase([in, defaultvalue(0)] IMgaFCO *elem);
01232 */
01233         [helpstring("getter for property IsMember")] HRESULT GetIsMemberDisp([in] IMgaFCO *obj, [out, retval] VARIANT_BOOL *pVal);
01234 };
01235 
01236 [
01237         object,
01238         uuid(270B4FA0-B17C-11D3-9AD1-00AA00B6FE26),
01239         dual,
01240         helpstring("IMgaConnection Interface"),
01241         pointer_default(unique)
01242 ]
01243 interface IMgaConnection : IMgaFCO
01244 {
01245         [helpstring("property AddConnPoint")] 
01246                 HRESULT AddConnPoint([in] BSTR rolename, [in] long maxinrole, 
01247                                                 [in] IMgaFCO *Target, [in] IMgaFCOs *refs, [out] IMgaConnPoint **pVal);
01248         [propget, helpstring("property ConnPoints")] HRESULT ConnPoints([out, retval] IMgaConnPoints **pVal);
01249 
01250         [helpstring("method CompareToBase; if connpoint is null, all connpoints are compared")] 
01251                         HRESULT CompareToBase([in] IMgaConnPoint *connpoint, [out] short *status);
01252         [helpstring("method RevertToBase; if connpoint is null, all connpoints are reverted")] 
01253                         HRESULT RevertToBase([in] IMgaConnPoint *connpoint);
01254 };
01255 
01256 [
01257         object,
01258         uuid(83BA3237-B758-11D3-ABAE-000000000000),
01259         dual,
01260         helpstring("IMgaSimpleConnection Interface"),
01261         pointer_default(unique)
01262 ]
01263 interface IMgaSimpleConnection : IMgaConnection
01264 {
01265         [propget, helpstring("property Src")] HRESULT Src([out, retval] IMgaFCO * *pVal);
01266         [propget, helpstring("property Dst")] HRESULT Dst([out, retval] IMgaFCO * *pVal);
01267         [propget, helpstring("property SrcReferences")] HRESULT SrcReferences([out, retval] IMgaFCOs **pVal);
01268         [propget, helpstring("property DstReferences")] HRESULT DstReferences([out, retval] IMgaFCOs **pVal);
01269         [helpstring("method SetDst")] HRESULT SetDst([in] IMgaFCOs *references, [in] IMgaFCO *Target);
01270         [helpstring("method SetSrc")] HRESULT SetSrc([in] IMgaFCOs *references, [in] IMgaFCO *Target);
01271 /*
01272         [propget, helpstring("property SrcPort")] HRESULT SrcPort([out, retval] IMgaRefPort **pVal);
01273         [propget, helpstring("property DstPort")] HRESULT DstPort([out, retval] IMgaRefPort **pVal);
01274         [propput, helpstring("property SrcPort")] HRESULT SrcPort([in] IMgaRefPort *newVal);
01275         [propput, helpstring("property DstPort")] HRESULT DstPort([in] IMgaRefPort *newVal);
01276 */
01277 };
01278 
01279 [
01280         object,
01281         uuid(cb8fa000-c1fd-11d3-9ad2-00aa00b6fe26),
01282         dual,
01283         helpstring("IMgaConnPoint Interface"),
01284         pointer_default(unique)
01285 ]
01286 interface IMgaConnPoint : IDispatch
01287 {
01288         [propget, helpstring("property Owner")] HRESULT Owner([out, retval] IMgaConnection **pVal);
01289         [propget, helpstring("property ConnRole")] HRESULT ConnRole([out, retval] BSTR *pVal);
01290         [propput, helpstring("property ConnRole")] HRESULT ConnRole([in] BSTR newVal);
01291         [propget, helpstring("property Target")] HRESULT Target([out, retval] IMgaFCO **pVal);
01292         [propget, helpstring("property References")] HRESULT References([out, retval] IMgaFCOs **pVal);
01293         [helpstring("method Remove")] HRESULT Remove();
01294 //      [propget, helpstring("property RefPort")] HRESULT RefPort([out, retval] IMgaRefPort **pVal);
01295 };
01296 
01297 
01298 [
01299         object,
01300         uuid(83BA323D-B758-11D3-ABAE-000000000000),
01301         dual,
01302         helpstring("IMgaRegNode Interface"),
01303         pointer_default(unique)
01304 ]
01305 interface IMgaRegNode : IDispatch
01306 {
01307         [propget, helpstring("property Name")]
01308         HRESULT Name([out, retval] BSTR *pVal);
01309 
01310         [propget, helpstring("property Path")]
01311         HRESULT Path([out, retval] BSTR *pVal);
01312 
01313         [propget, helpstring("property Value")]
01314         HRESULT Value([out, retval] BSTR *pVal);
01315 
01316         [propput, helpstring("property Value")]
01317         HRESULT Value([in] BSTR newVal);
01318 
01319         [propget, helpstring("property FCOValue")]
01320         HRESULT FCOValue([out, retval] IMgaFCO **pVal);
01321 
01322         [propput, helpstring("property FCOValue")]
01323         HRESULT FCOValue([in] IMgaFCO *newVal);
01324 
01325         [propget, helpstring("property SubNodes")]
01326         HRESULT SubNodes([in, defaultvalue(0)] VARIANT_BOOL virtuals, [out, retval] IMgaRegNodes **p);
01327 
01328         [helpstring("getter for property SubNodes")]
01329         HRESULT GetSubNodesDisp([in, defaultvalue(0)] VARIANT_BOOL virtuals, [out, retval] IMgaRegNodes **p);
01330 
01331         [propget, helpstring("property SubNodeByName")]
01332         HRESULT SubNodeByName([in] BSTR name, [out, retval] IMgaRegNode **pVal);
01333 
01334         [helpstring("getter for property SubNodeByName")]
01335         HRESULT GetSubNodeByNameDisp([in] BSTR name, [out, retval] IMgaRegNode **pVal);
01336 
01337         [propget, helpstring("property ParentNode")]
01338         HRESULT ParentNode([out, retval] IMgaRegNode **p);
01339 
01340         [propget, helpstring("property Status of definition: 0: here, -1: in meta, >=1: inherited")]
01341         HRESULT Status([out] long *status);
01342 
01343         [propget, helpstring("property Opacity")]
01344         HRESULT Opacity([out, retval] VARIANT_BOOL *p);
01345 
01346         [propput, helpstring("property Opacity")]
01347         HRESULT Opacity([in] VARIANT_BOOL p);
01348 
01349         [helpstring("method Clear: assign empty value (nop if virtual)")]
01350         HRESULT Clear();
01351 
01352         [helpstring("method RemoveTree: remove this node and subnodes (nop if already virtual)")]
01353         HRESULT RemoveTree();
01354 };
01355 
01356 [
01357         object,
01358         uuid(c8f6e970-c1fd-11d3-9ad2-00aa00b6fe26),
01359         dual,
01360         helpstring("IMgaFilter Interface"),
01361         pointer_default(unique)
01362 ]
01363 interface IMgaFilter : IDispatch
01364 {
01365         [propget, helpstring("property Name: Space-separated list of names")] 
01366                                         HRESULT Name([out, retval] BSTR *pVal);
01367         [propput, helpstring("property Name")] 
01368                                         HRESULT Name([in] BSTR newVal);
01369         [propget, helpstring("property Kind: Space separated list of names or #<metarefs>")] 
01370                                         HRESULT Kind([out, retval] BSTR *pVal);
01371         [propput, helpstring("property Kind")] 
01372                                         HRESULT Kind([in] BSTR newVal);
01373         [propget, helpstring("property Role: Space separated list of names or #<metarefs>")] 
01374                                         HRESULT Role([out, retval] BSTR *pVal);
01375         [propput, helpstring("property Role")] 
01376                                         HRESULT Role([in] BSTR newVal);
01377         [propget, helpstring("property ObjType: Space separated list of objtype numbers or mnemonics")] 
01378                                         HRESULT ObjType([out, retval] BSTR *pVal);
01379         [propput, helpstring("property ObjType")] 
01380                                         HRESULT ObjType([in] BSTR newVal);
01381         [propget, helpstring("property SearchLevel space separated list of numbers, or dash-separated number pairs")] 
01382                                         HRESULT Level([out, retval] BSTR *pVal);
01383         [propput, helpstring("property SearchLevel")] 
01384                                         HRESULT Level([in] BSTR newVal);
01385         [ propget,  helpstring("property Project")] 
01386                                         HRESULT Project([out, retval] IMgaProject **pVal);
01387 };
01388 
01389 [
01390         object,
01391         uuid(CBF20084-BD43-11D3-9AD2-00AA00B6FE26),
01392         dual,
01393         helpstring("IMgaAttribute Interface"),
01394         pointer_default(unique)
01395 ]
01396 interface IMgaAttribute : IDispatch
01397 {
01398         [propget, helpstring("property Meta")] HRESULT Meta([out, retval] IMgaMetaAttribute **pVal);
01399         [propget, helpstring("property Value")] HRESULT Value([out, retval] VARIANT *pVal);
01400         [propput, helpstring("property Value")] HRESULT Value([in] VARIANT newVal);
01401         [propget, helpstring("property Owner")] HRESULT Owner([out, retval] IMgaFCO * *pVal);
01402         [propget, helpstring("property Status of definition: 0: here, -1: in meta, >=1: inherited, -2: undefined")] 
01403                                                                                         HRESULT Status([out, retval] long *status);
01404         [propget, helpstring("property OrigValue")] HRESULT OrigValue([out, retval] VARIANT *pVal);
01405         [propget, helpstring("property HasChanged")] HRESULT HasChanged([out, retval] VARIANT_BOOL *pVal);
01406 
01407         [propget, helpstring("property StringValue")] HRESULT StringValue([out, retval] BSTR *pVal);
01408         [propput, helpstring("property StringValue")] HRESULT StringValue([in] BSTR newVal);
01409         [propget, helpstring("property IntValue")] HRESULT IntValue([out, retval] long *pVal);
01410         [propput, helpstring("property IntValue")] HRESULT IntValue([in] long newVal);
01411         [propget, helpstring("property BoolValue")] HRESULT BoolValue([out, retval] VARIANT_BOOL *pVal);
01412         [propput, helpstring("property BoolValue")] HRESULT BoolValue([in] VARIANT_BOOL newVal);
01413         [propget, helpstring("property FloatValue")] HRESULT FloatValue([out, retval] double *pVal);
01414         [propput, helpstring("property FloatValue")] HRESULT FloatValue([in] double newVal);
01415         [propget, helpstring("property FCOValue")] HRESULT FCOValue([out, retval] IMgaFCO **pVal);
01416         [propput, helpstring("property FCOValue")] HRESULT FCOValue([in] IMgaFCO * newVal);
01417 
01418         [propget, helpstring("property RegistryNode")] 
01419                 HRESULT RegistryNode([in] BSTR path, [out, retval] IMgaRegNode **pVal);
01420         [helpstring("getter for property RegistryNode")] 
01421                 HRESULT GetRegistryNodeDisp([in] BSTR path, [out, retval] IMgaRegNode **pVal);
01422         [propget, helpstring("property Registry")] 
01423                 HRESULT Registry([in, defaultvalue(0)] VARIANT_BOOL virtuals, [out, retval] IMgaRegNodes **pVal);
01424         [helpstring("getter for property Registry")] 
01425                 HRESULT GetRegistryDisp([in, defaultvalue(0)] VARIANT_BOOL virtuals, [out, retval] IMgaRegNodes **pVal);
01426         [propget, helpstring("property RegistryValue")] 
01427                 HRESULT RegistryValue([in] BSTR path, [out, retval] BSTR *pVal);
01428         [propput, helpstring("property RegistryValue")] 
01429                 HRESULT RegistryValue([in] BSTR path, [in] BSTR newval);
01430         [helpstring("getter for property RegistryValue")] 
01431                 HRESULT GetRegistryValueDisp([in] BSTR path, [out, retval] BSTR *pVal);
01432         [helpstring("setter for property RegistryValue")] 
01433                 HRESULT SetRegistryValueDisp([in] BSTR path, [in] BSTR newval);
01434 
01435         [helpstring("method Clear")] HRESULT Clear();
01436 };
01437 
01438 
01439 
01440 
01441 
01442 MGACOLL_INTERFACE(c59c2210-c1fd-11d3-9ad2-00aa00b6fe26, MgaFolder)
01443 MGACOLL_INTERFACE(c5f4c2f0-c1fd-11d3-9ad2-00aa00b6fe26, MgaFCO)
01444 MGACOLL_INTERFACE(c6f3f340-c1fd-11d3-9ad2-00aa00b6fe26, MgaAttribute)
01445 MGACOLL_INTERFACE(c71a26f0-c1fd-11d3-9ad2-00aa00b6fe26, MgaPart)
01446 MGACOLL_INTERFACE(c7f19c60-c1fd-11d3-9ad2-00aa00b6fe26, MgaConnPoint)
01447 MGACOLL_INTERFACE(c79f1840-c1fd-11d3-9ad2-00aa00b6fe26, MgaRegNode)
01448 MGACOLL_INTERFACE(c8a5ec80-c1fd-11d3-9ad2-00aa00b6fe26, MgaAddOn)
01449 MGACOLL_INTERFACE2(c87caa70-c1fd-11d3-9ad2-00aa00b6fe26, IMgaTerritories, IMgaTerritory)
01450 MGACOLL_INTERFACE(c8cda760-c1fd-11d3-9ad2-00aa00b6fe26, MgaComponent)
01451 MGACOLL_INTERFACE(c9d8df93-c1fd-11d3-9ad2-00aa00b6fe26, MgaClient)
01452 MGACOLL_INTERFACE(c5aac2f0-c1fd-11d3-9ad2-00aa00b6fe26, MgaObject)
01453 
01454 [
01455         object,
01456         uuid(C356B135-961D-4B6C-8B1F-257E19117CC1),
01457         dual,
01458         helpstring("IMgaO Interface"),
01459         pointer_default(unique)
01460 ]
01461 interface IMgaO : IDispatch
01462 {
01463 };