|
AndroMeta
2.0.0
|
00001 /* 00002 * Copyright 2009-2012 AndroMeta LLC. All rights reserved. 00003 * 00004 * AndroMeta LLC retains all intellectual property and proprietary 00005 * rights to this software and related documentation and any modifications 00006 * thereto. Any use, reproduction, disclosure, or distribution of this 00007 * software and related documentation without an express license agreement 00008 * from AndroMeta LLC is strictly prohibited. 00009 * 00010 */ 00011 00021 #ifndef ANDROMETA_MPL_OBJECT_H 00022 #define ANDROMETA_MPL_OBJECT_H 00023 00024 #include <AndroMeta/MNode.h> 00025 00026 namespace Meta{ 00027 00028 class MPLNode; 00029 00030 typedef std::pair<class MPLObject*, class MPLObject*> MPLPair; 00031 00038 class MPLObject{ 00039 public: 00046 MPLNode* compile(mnode& n); 00047 00054 static MPLNode* compile(const MPLPair& pair, mnode& n); 00055 00063 static MPLNode* compile(MPLObject* o1, MPLObject* o2, mnode& n){ 00064 return compile(std::make_pair(o1, o2), n); 00065 } 00066 00071 static void release(mnode& n); 00072 00076 virtual uint64_t getAttribute(const mstr& attr) const = 0; 00077 00081 virtual size_t getSize() const = 0; 00082 }; 00083 00084 typedef MVector<MPLPair> MPLPairVec; 00085 00086 } // end namespace Meta 00087 00088 #endif // ANDROMETA_MPL_OBJECT_H
1.7.6.1