#ifndef __CPOLICYBASE__
#define __CPOLICYBASE__
#ifdef __cplusplus
extern "C" {
#endif
#include <time.h>
#include <CoreFoundation/CoreFoundation.h>
#include <PasswordServer/AuthFile.h>
#ifdef __cplusplus
};
#endif
class CPolicyBase
{
public:
CPolicyBase();
CPolicyBase( CFDictionaryRef inPolicyDict );
CPolicyBase( const char *xmlDataStr );
virtual ~CPolicyBase();
virtual void CPolicyCommonInit( void ) = 0;
virtual char * GetPolicyAsSpaceDelimitedData( void ) = 0;
virtual char * GetPolicyAsXMLData( void );
static bool ConvertCFDateToBSDTime( CFDateRef inDateRef, struct tm *outBSDDate );
static bool ConvertCFDateToBSDTime( CFDateRef inDateRef, BSDTimeStructCopy *outBSDDate );
static bool ConvertBSDTimeToCFDate( struct tm *inBSDDate, CFDateRef *outDateRef );
static bool ConvertBSDTimeToCFDate( BSDTimeStructCopy *inBSDDate, CFDateRef *outDateRef );
protected:
virtual int ConvertPropertyListPolicyToStruct( CFMutableDictionaryRef inPolicyDict ) = 0;
virtual int ConvertStructToPropertyListPolicy( void ) = 0;
virtual bool GetBooleanForKey( CFStringRef inKey, bool *outValue );
CFMutableDictionaryRef mPolicyDict;
};
#endif