Windows2003-3790/inetcore/wininet/p3p/policyref.h
2020-09-30 16:53:55 +02:00

66 lines
1.5 KiB
C++

#ifndef _POLICYREF_H_
#define _POLICYREF_H_
#include "p3pglobal.h"
#include "hierarchy.h"
class P3PReference {
public:
P3PReference(P3PCURL pszPolicy);
~P3PReference();
void include(P3PCURL pszSubtree);
void exclude(P3PCURL pszSubtree);
void addVerb(const char *pszVerb);
bool applies(P3PCURL pszAbsoluteURL, const char *pszVerb=NULL);
inline P3PCURL about() { return pszPolicyAbout; }
private:
struct Constraint {
union {
P3PURL pszPrefix; // URL prefix (including wildcards)
char *pszVerb; // Allowed verb
};
int fPath :1; // True if this is a path constraint
int fInclude :1; // Switch determines whether this subtree is include/exclude
Constraint *pNext; // Pointer to next constraint
};
void addPathConstraint(P3PCURL pszSubtree, bool fInclude);
void addConstraint(Constraint *pc);
Constraint *pHead;
P3PReference *pNext;
bool fAllVerbs;
P3PURL pszPolicyAbout;
friend class P3PPolicyRef;
};
class P3PPolicyRef : public P3PObject {
public:
P3PPolicyRef();
~P3PPolicyRef();
void addReference(P3PReference *pr);
P3PCURL mapResourceToPolicy(P3PCURL pszResource, const P3PVERB pszVerb=NULL);
void setExpiration(FILETIME ft) { ftExpires = ft; }
FILETIME getExpiration() const { return ftExpires; }
private:
P3PReference *pHead, *pLast;
FILETIME ftExpires;
};
#endif