[commit] r2168 - in trunk/GME: Core Mga
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Wed Apr 10 08:46:09 CDT 2013
Author: ksmyth
Date: Wed Apr 10 08:46:09 2013
New Revision: 2168
Log:
Some memory improvements
Modified:
trunk/GME/Core/CoreAttribute.h
trunk/GME/Core/CoreMetaAttribute.h
trunk/GME/Core/CoreObject.h
trunk/GME/Core/CoreTerritory.h
trunk/GME/Core/CoreTransactionItem.h
trunk/GME/Mga/MgaAttribute.cpp
trunk/GME/Mga/MgaAttribute.h
Modified: trunk/GME/Core/CoreAttribute.h
==============================================================================
--- trunk/GME/Core/CoreAttribute.h Wed Apr 10 08:45:30 2013 (r2167)
+++ trunk/GME/Core/CoreAttribute.h Wed Apr 10 08:46:09 2013 (r2168)
@@ -29,6 +29,8 @@
};
// --------------------------- CCoreAttribute
+#pragma pack(push)
+#pragma pack(1)
class ATL_NO_VTABLE CCoreAttribute :
public CComObjectRootEx<CComSingleThreadModel>,
@@ -141,6 +143,8 @@
#endif
};
+#pragma pack(pop)
+
// --------------------------- CCoreLockAttribute
class ATL_NO_VTABLE CCoreLockAttribute :
@@ -154,11 +158,11 @@
protected:
typedef unsigned short lock_count_type;
+ locking_type original_locking; // local locking when enterging dirty state
lock_count_type read_count;
lock_count_type write_count;
- locking_type original_locking; // local locking when enterging dirty state
lockval_type others_lockval; // original lockval minus local locking
public:
@@ -305,9 +309,9 @@
typedef objects_type::iterator objects_iterator;
protected:
+ bool isEmpty;
values_type values;
objects_iterator backref;
- bool isEmpty;
// ------- CopyTo
Modified: trunk/GME/Core/CoreMetaAttribute.h
==============================================================================
--- trunk/GME/Core/CoreMetaAttribute.h Wed Apr 10 08:45:30 2013 (r2167)
+++ trunk/GME/Core/CoreMetaAttribute.h Wed Apr 10 08:46:09 2013 (r2168)
@@ -37,9 +37,9 @@
public:
CCoreMetaObject *object;
attrid_type attrid;
+ valtype_type valtype;
std::wstring token;
std::wstring name;
- valtype_type valtype;
// ------- Methods
Modified: trunk/GME/Core/CoreObject.h
==============================================================================
--- trunk/GME/Core/CoreObject.h Wed Apr 10 08:45:30 2013 (r2167)
+++ trunk/GME/Core/CoreObject.h Wed Apr 10 08:46:09 2013 (r2168)
@@ -18,8 +18,7 @@
class ATL_NO_VTABLE CCoreObject :
public CComObjectRootEx<CComSingleThreadModel>,
public IDispatchImpl<ICoreObject, &IID_ICoreObject, &LIBID_MGACoreLib>,
- public ISupportErrorInfoImpl<&IID_ICoreObject>,
- public CCoreFinalTrItem
+ public CCoreFinalTrItemImpl<&IID_ICoreObject>
{
public:
CCoreObject();
Modified: trunk/GME/Core/CoreTerritory.h
==============================================================================
--- trunk/GME/Core/CoreTerritory.h Wed Apr 10 08:45:30 2013 (r2167)
+++ trunk/GME/Core/CoreTerritory.h Wed Apr 10 08:46:09 2013 (r2168)
@@ -26,9 +26,8 @@
class ATL_NO_VTABLE CCoreTerritory :
public CComObjectRootEx<CComSingleThreadModel>,
public IDispatchImpl<ICoreTerritory, &IID_ICoreTerritory, &LIBID_MGACoreLib>,
- public ISupportErrorInfoImpl<&IID_ICoreTerritory>,
- public CCoreTransactionItem,
- public CCoreFinalTrItem
+ public CCoreFinalTrItemImpl<&IID_ICoreTerritory>,
+ public CCoreTransactionItem
{
public:
CCoreTerritory();
Modified: trunk/GME/Core/CoreTransactionItem.h
==============================================================================
--- trunk/GME/Core/CoreTransactionItem.h Wed Apr 10 08:45:30 2013 (r2167)
+++ trunk/GME/Core/CoreTransactionItem.h Wed Apr 10 08:46:09 2013 (r2168)
@@ -35,7 +35,7 @@
// call CCoreProject::RegisterFinalTrItem to register, call it only once
// CoreObjects register to group database access of their CoreAttributes
-class ATL_NO_VTABLE CCoreFinalTrItem
+class ATL_NO_VTABLE CCoreFinalTrItem : public ISupportErrorInfo // all subclasses will inherit ISupportErrorInfoImpl, so inherit here to save a vtable entry
{
public:
// called for final abort, clear dirty
@@ -48,6 +48,18 @@
virtual void CommitFinalTransactionFinish(bool undo) NOTHROW = 0;
};
+template<const IID* piid>
+class ATL_NO_VTABLE CCoreFinalTrItemImpl : public CCoreFinalTrItem // all subclasses will inherit ISupportErrorInfoImpl, so inherit here to save a vtable entry
+{
+ // ISupportErrorInfoImpl
+public:
+ STDMETHOD(InterfaceSupportsErrorInfo)(_In_ REFIID riid)
+ {
+ return (InlineIsEqualGUID(riid,*piid)) ? S_OK : S_FALSE;
+ }
+
+};
+
// --------------------------- CCoreUndoItem
// call CCoreProject::RegisterUndoItem to register,
Modified: trunk/GME/Mga/MgaAttribute.cpp
==============================================================================
--- trunk/GME/Mga/MgaAttribute.cpp Wed Apr 10 08:45:30 2013 (r2167)
+++ trunk/GME/Mga/MgaAttribute.cpp Wed Apr 10 08:46:09 2013 (r2168)
@@ -22,10 +22,6 @@
COMTHROW(meta->get_ValueType(&attrtyp));
inputtyp = attrtyp;
if(attrtyp == ATTVAL_ENUM) attrtyp = ATTVAL_STRING;
- regprefix = "AttrRegs/";
- CComBSTR metaname;
- COMTHROW(meta->get_Name(&metaname));
- COMTHROW(regprefix.Append(metaname));
}
STDMETHODIMP CMgaAttribute::get_Owner( IMgaFCO **pVal) {
@@ -992,9 +988,4 @@
mref = mr;
fco = o;
mgaproject = p;
- CComPtr<IMgaMetaAspect> meta;
- COMTHROW(get_MetaAspect(&meta));
- COMTHROW(meta->get_Name(&aspname));
- regprefix = "PartRegs/";
- COMTHROW(regprefix.Append(aspname));
}
Modified: trunk/GME/Mga/MgaAttribute.h
==============================================================================
--- trunk/GME/Mga/MgaAttribute.h Wed Apr 10 08:45:30 2013 (r2167)
+++ trunk/GME/Mga/MgaAttribute.h Wed Apr 10 08:46:09 2013 (r2168)
@@ -91,7 +91,16 @@
FCOPtr fco;
attval_enum attrtyp, inputtyp;
CMgaProject *mgaproject;
- CComBSTR(regprefix);
+ CComBSTR getregprefix()
+ {
+ CComQIPtr<IMgaMetaAttribute> meta = mgaproject->FindMetaRef(mref);
+ CComBSTR _regprefix = L"AttrRegs/";
+ CComBSTR metaname;
+ COMTHROW(meta->get_Name(&metaname));
+ COMTHROW(_regprefix.Append(metaname));
+ return _regprefix;
+ }
+ __declspec(property(get=getregprefix)) CComBSTR regprefix;
};
@@ -289,8 +298,17 @@
long load_status;
FCOPtr fco;
CMgaProject *mgaproject; // Holds no reference
- CComBSTR(regprefix);
- CComBSTR(aspname);
+ CComBSTR getregprefix()
+ {
+ CComPtr<IMgaMetaAspect> meta;
+ COMTHROW(get_MetaAspect(&meta));
+ CComBSTR aspname;
+ COMTHROW(meta->get_Name(&aspname));
+ CComBSTR _regprefix = L"PartRegs/";
+ COMTHROW(_regprefix.Append(aspname));
+ return _regprefix;
+ }
+ __declspec(property(get=getregprefix)) CComBSTR regprefix;
};
More information about the gme-commit
mailing list