[gme-users] setting up GME subtypes in an interpreter

Matthew J. Emerson mjemerson at isis.vanderbilt.edu
Mon Feb 20 16:29:07 CST 2006


I'm trying to attach one FCO to another FCO. Actually I anticipate
having a general problem where after creating a large number of complex
model elements, I discover that I need to make them all subtypes of some
other model element. This is because of the weird unsupported semantics
I unfortunately decided to give to GME subtyping. So, I wanted to
quickly make a small tool that I could use to do this when the need
arises.

 

For now, this is what I came up with in terms of a raw COM interpreter:

 

STDMETHODIMP RawComponent::InvokeEx( IMgaProject *project,  IMgaFCO
*currentobj,  

                                                      IMgaFCOs
*selectedobjs,  long param) {

      COMTRY {

        if(interactive) {

            CComBSTR projname;

            CComBSTR focusname = "<nothing>";

            CComPtr<IMgaTerritory> terr;

            IMgaFCO* subtype(NULL);

            IMgaFCO* supertype(NULL);

            CComBSTR subtypeID ("id-0065-00000611");

            CComBSTR supertypeID ("id-0065-00000890");

            COMTHROW(project->CreateTerritory(NULL, &terr));

            COMTHROW(project->BeginTransaction(terr));

            try {

                  COMTHROW(project->GetFCOByID(subtypeID, &subtype));

                  COMTHROW(project->GetFCOByID(supertypeID,
&supertype));

                  if(subtype && supertype)
COMTHROW(subtype->AttachToArcheType(supertype, false));

                  COMTHROW(project->CommitTransaction());

            }     catch(...) { project->AbortTransaction(); throw; }

 

        } 

      } COMCATCH(;);

}

 

This is unsophisticated, but effective considering I know nothing about
COM programming. ;) Since I don't think I'll need to do this more than
once or twice a week, I can simply edit the object IDs and recompile the
interpreter as needed.

 

Thanks for the help Zoli.

 

--Matt

 

  _____  

From: gme-users-bounces at list.isis.vanderbilt.edu
[mailto:gme-users-bounces at list.isis.vanderbilt.edu] On Behalf Of Zoltan
Molnar
Sent: Monday, February 20, 2006 4:04 PM
To: gme-users
Subject: RE: [gme-users] setting up GME subtypes in an interpreter

 

IsBound indicates whether e.g. a reference inherits its target from the
base, or it has a separate target specified.

What kind of element will you attach in this way?

Zoli

	-----Original Message-----
	From: gme-users-bounces at list.isis.vanderbilt.edu
[mailto:gme-users-bounces at list.isis.vanderbilt.edu] On Behalf Of Zoltan
Molnar
	Sent: Monday, February 20, 2006 3:58 PM
	To: gme-users
	Subject: RE: [gme-users] setting up GME subtypes in an
interpreter

	You have to add the following xml attributes:

	-derivedfrom

	-isinstance

	-isbound

	-isprimary

	 

	Zoli

	 

		-----Original Message-----
		From: gme-users-bounces at list.isis.vanderbilt.edu
[mailto:gme-users-bounces at list.isis.vanderbilt.edu] On Behalf Of Matthew
J. Emerson
		Sent: Monday, February 20, 2006 3:51 PM
		To: gme-users
		Subject: RE: [gme-users] setting up GME subtypes in an
interpreter

		Thanks Zoli.

		 

		In the case where I only want to adjust a single element
in this way, is it possible to hand-edit the .xme form of the model? If
so, can you describe the necessary modification?

		 

		--Matt

		 

		
  _____  


		From: gme-users-bounces at list.isis.vanderbilt.edu
[mailto:gme-users-bounces at list.isis.vanderbilt.edu] On Behalf Of Zoltan
Molnar
		Sent: Monday, February 20, 2006 3:00 PM
		To: gme-users
		Subject: RE: [gme-users] setting up GME subtypes in an
interpreter

		 

		Hi,

		 

		You can use AttachToArcheType [in Mga.Idl, defined as:
AttachToArcheType([in] IMgaFCO *newtype, [in] VARIANT_BOOL instance);]
which can make an element a subtype of another.

		For example in a raw com interpreter you would just
create a territory, open a transaction, Attach an fco, then commit the
transaction.

		 

		br, Zoli

			-----Original Message-----
			From: gme-users-bounces at list.isis.vanderbilt.edu
[mailto:gme-users-bounces at list.isis.vanderbilt.edu] On Behalf Of Matthew
J. Emerson
			Sent: Monday, February 20, 2006 2:50 PM
			To: gme-users
			Subject: [gme-users] setting up GME subtypes in
an interpreter

			Is it possible to use an interpreter to find two
existing elements in a model and make one into the subtype of another?
Does anyone have a code sample?

			 

			--Matt

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.isis.vanderbilt.edu/pipermail/gme-users/attachments/20060220/9dac1e53/attachment.htm


More information about the gme-users mailing list