13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*
23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (C) 2014 The Android Open Source Project
33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Licensed under the Apache License, Version 2.0 (the "License");
53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * you may not use this file except in compliance with the License.
63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * You may obtain a copy of the License at
73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *      http://www.apache.org/licenses/LICENSE-2.0
93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Unless required by applicable law or agreed to in writing, software
113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * distributed under the License is distributed on an "AS IS" BASIS,
123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * See the License for the specific language governing permissions and
143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * limitations under the License.
153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef _DM_TREE_NODE_CLASS_H
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#define _DM_TREE_NODE_CLASS_H
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef __cplusplus
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#error "This is a C++ header file; it requires C++ to compile."
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//------------------------------------------------------------------------
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//            Header Name: dm_tree_node_class.H
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//            General Description: This file contains the definition of
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//                                 DMNode class.
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//------------------------------------------------------------------------
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "syncml_dm_data_types.h"        //For DM data type definitions
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_Logger.h"
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dm_tree_typedef.h"    //For tree type definitions
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmstring.h"
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmbuffer.h"
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmdefs.h"
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmt.hpp"
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmtPlugin.hpp"
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmPlugin.h"
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass SyncML_DM_Archive;
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass DMNode
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyprotected:
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   //Those values should not be called directly as For
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   // plugin proxy node, you must access them through accessor function.
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   // For archiver, it is OK.
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   DMString abNodeName;
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   DMNode *pcParentOfNode;  //Pointer to Parent of the node
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   DMNode *pcFirstChild;   //Pointer to  First Child of the node
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   DMNode *pcNextSibling;  //Pointer to  Next Sibling of the node
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   // psType cannot be accessed directly for mime type optimization
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   DMString psType_;
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   DMString m_strTitle;
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   SYNCML_DM_FORMAT_T bFormat;
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   UINT16  m_nFlags;  // bit 0 set if plugin, bit 1 set if permanent: see next enum for details
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef DM_IGNORE_TSTAMP_AND_VERSION
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   XPL_CLK_CLOCK_T wTStamp;
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   UINT16                wVerNo;
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   CPCHAR getType() const;
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   SYNCML_DM_RET_STATUS_T setType(const char * strType);
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   SYNCML_DM_RET_STATUS_T set(const DMGetData * pData);
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   SYNCML_DM_RET_STATUS_T set(CPCHAR strName, CPCHAR strTitle, const DMGetData * pData);
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   SYNCML_DM_RET_STATUS_T set(const DMAddNodeProp * pNodeProp);
763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambypublic:
783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	 SyncML_DM_Archive 	* pArchive;
793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   enum {
813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      enum_NodePlugin = 1,
823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      enum_NodePermanent = 2,
833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      enum_NodeSkeleton = 4,     // fake node for lazy loading
843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      enum_NodeOverlayPI = 8,   // mount point for Overlay Pi
853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      enum_NodeStoresPID = 16,  // multinode with Overlay PI data
863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      enum_NodeOPISyncNeeded = 32,
873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      enum_NodeOPISyncNotNeeded = 64,
883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      enum_NodeNoGetAccess = 128,  // multinode with Overlay PI data
893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      enum_NodeOPISyncUptodate = 256,
903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      enum_NodeESN = 512,
913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      enum_NodeNotPersisted = enum_NodePlugin | enum_NodeSkeleton | enum_NodeOverlayPI |enum_NodeOPISyncUptodate
923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   };
933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   friend class DMTree;
953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   friend class SyncML_DM_Archive;
963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   friend class DMMetaDataManager;
973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   friend class SyncML_PlugIn_WBXMLLog;
983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   friend class SyncML_DM_WBXMLWriter;
993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   DMNode(BOOLEAN bPlugin);
1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual ~DMNode();
1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   //Overloading new and delete operators
1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline void* operator new(size_t dwSize)
1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   {
1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      return (DmAllocMem(dwSize));
1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   }
1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline void operator delete(void *pvBuf)
1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   {
1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      DmFreeMem(pvBuf);
1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   }
1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline DMNode *GetParent() {return pcParentOfNode;}
1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   //The following are Pure virtual functions.Leaf or Interior node
1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   //Classes deriving from this class MUST implement the functions.
1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T Add(DMAddData & oAddData) = 0;
1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T Delete(CPCHAR pbUri) = 0;
1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T Get(CPCHAR pbUri, DMGetData & oReturnData) = 0;
1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T Find(CPCHAR pbUri) = 0;
1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T SetAddedNode(CPCHAR pbUri) = 0;
1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T RemoveAddedNode(CPCHAR pbUri) = 0;
1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T GetFormat(CPCHAR pbUri,
1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                           SYNCML_DM_FORMAT_T * pdwRetPropertyData) = 0;
1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T GetSize(CPCHAR pbUri,
1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                          UINT32 *pdwRetPropertyData) = 0;
1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T GetType(CPCHAR pbUri,
1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                         DMString& strType) = 0;
1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T Replace(DMAddData & oReplaceData) = 0;
1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T Rename(CPCHAR pbUri, CPCHAR psNewNodeName) = 0;
1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T Rollback(SYNCML_DM_COMMAND_T  bDMCommand,
1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                             CPCHAR pbUri) = 0;
1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T GetName(CPCHAR pbUri, DMString& strName);
1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T SetName(CPCHAR pbUri, CPCHAR pbNewName);
1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T GetTitle(CPCHAR pbUri, DMString& ppbTitle);
1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T SetTitle(CPCHAR pbUri, CPCHAR pbNewTitle);
1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef DM_IGNORE_TSTAMP_AND_VERSION
1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual XPL_CLK_CLOCK_T GetTStamp(CPCHAR /*pbUri*/)
1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   {
1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//     pbUri = NULL;
1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     return wTStamp;
1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   }
1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T SetTStamp(CPCHAR pbUri, XPL_CLK_CLOCK_T timeStamp);
1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual UINT16 GetVerNo(const char* /*pbUri*/)
1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   {
1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//     pbUri = NULL;
1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     return wVerNo;
1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   }
1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T SetVerNo (CPCHAR pbUri, UINT16 wVerNo);
1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   // DP: leaf node data access
1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual DMBuffer * getData() { return NULL; }
1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual const DMBuffer * getData() const { return NULL; }
1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   // overlay plug-in access
1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual DmtOverlayPluginData*  getOverlayPIData() { return NULL;}
1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual const DmtOverlayPluginData*  getOverlayPIData() const { return NULL;}
1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual PDMPlugin  getOverlayPI() {return PDMPlugin();}
1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   //-----------Work on THIS NODE ONLY --------------
1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   // And should used only by persistence layer etc.
1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   //More methods implemented in the DMNode class.
1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   //returns the Format of the node
1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline SYNCML_DM_FORMAT_T getFormat() const {  return(bFormat);}
1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline BOOLEAN  isPermanent() const {return (m_nFlags & enum_NodePermanent) != 0; }
1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline BOOLEAN  isPlugin() const {return (m_nFlags & enum_NodePlugin) != 0; }
1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline BOOLEAN  IsSkeletonNode() const {return (m_nFlags & enum_NodeSkeleton) != 0; }
1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   // synchronization state of Overlay PI
1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline BOOLEAN  opiSyncNeeded() const {return (m_nFlags & enum_NodeOPISyncNeeded) != 0; }
1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline BOOLEAN  opiSyncNotNeeded() const {return (m_nFlags & enum_NodeOPISyncNotNeeded) != 0; }
1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline BOOLEAN  opiSyncMayNeeded() const {return (m_nFlags & (enum_NodeOPISyncNeeded |enum_NodeOPISyncNotNeeded)) == 0; }
2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline BOOLEAN  opiInSync() const {return (m_nFlags & enum_NodeOPISyncUptodate) != 0; }
2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline BOOLEAN  IsOverlayPI() const {return (m_nFlags & enum_NodeOverlayPI) != 0; }
2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline BOOLEAN  IsOverlayPIData() const {return (m_nFlags & enum_NodeStoresPID) != 0; }
2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual BOOLEAN  IsGetAccess(CPCHAR pURI = NULL) const {return (m_nFlags & enum_NodeNoGetAccess) == 0; }
2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline UINT16  getFlags() const {return m_nFlags;}
2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline void     setFlags( UINT16 n ) { m_nFlags = n;}
2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline void     addFlags( UINT16 n ) { m_nFlags |= n;}
2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline CPCHAR getName() const {  return abNodeName.c_str(); }
2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline CPCHAR getTitle() const { return m_strTitle.c_str();}
2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   DMNode* GetChildByName( const char* szName ) const;
2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   DMNode* GetNextSerializeItem() ;
2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   void ConvertPathToSkeleton( DMNode* psStartNode ) ;
2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT
2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline BOOLEAN  IsESN() const {return (m_nFlags & enum_NodeESN) != 0; }
2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   virtual SYNCML_DM_RET_STATUS_T  IsESN(CPCHAR pbUri, BOOLEAN& bESN);
2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   inline void  SetESN()  { m_nFlags |= enum_NodeESN; }
2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby};
2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//------------------------------------------------------------------------
2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif //_DM_TREE_NODE_CLASS_H
233