00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef INC_SML_RESTRICTION_H
00019 #define INC_SML_RESTRICTION_H
00020
00021 #ifndef INC_SML_SIMPLEAR_H
00022 #include <mi32/simplear.h>
00023 #endif
00024
00025 #ifndef INC_SML_ENUMSET_H
00026 #include <mi32/enumset.h>
00027 #endif
00028
00029 #ifndef INC_SML_USAGE_H
00030 #include <sml/usage.h>
00031 #endif
00032
00033 #ifdef RVCSYSDLL
00034 #define RVCSYSLIBEXPORT MI_DLLEXPORT
00035 #define RVCSYSLIBCLASSEXPORT MI_DLLCLASSEXPORT
00036 #else
00037 #define RVCSYSLIBEXPORT MI_DLLIMPORT
00038 #define RVCSYSLIBCLASSEXPORT MI_DLLCLASSIMPORT
00039 #endif
00040
00041 namespace SML {
00042
00043
00044
00045 class RVCSYSLIBCLASSEXPORT RESTRICTION {
00046 public:
00049 RESTRICTION (
00050 ) { m_Usage.SetAll(); }
00051
00055 void AllowUsage (
00056 SML::USAGE usage
00057 ) { m_Usage += usage; }
00058
00061 void ClearUsage (
00062 ) { m_Usage.Clear(); }
00063
00065 void DisallowUsage (
00066 SML::USAGE usage
00067 ) { m_Usage -= usage; }
00068
00071 bool IsAllowed (
00072 MIPRODUCTCODE CurrentProduct
00073 ) const;
00074
00077 bool IsAllowed (
00078 SML::USAGE ScriptUsage
00079 ) const;
00080
00083 bool IsAllowed (
00084 MIPRODUCTCODE CurrentProduct,
00085 SML::USAGE ScriptUsage
00086 ) const;
00087
00093 void AddProduct (
00094 MIPRODUCTCODE MinimumProduct
00095 );
00096
00097 private:
00098 SIMPLE_ARRAY<MIPRODUCTCODE> m_AllowedProducts;
00099 ENUMSET<SML::USAGE, SML::USAGE_LAST> m_Usage;
00100
00101 };
00102
00103 }
00104
00105
00106 #undef RVCSYSLIBEXPORT
00107 #undef RVCSYSLIBCLASSEXPOR
00108
00109 #endif // INC_SML_RESTRICTION_H