/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef _CONSTRAINT_H #define _CONSTRAINT_H #include <Drm2CommonTypes.h> #include <ustring.h> #include <uvector.h> using namespace ustl; struct Context { string id; string version; }; const int INIT_VALUE = -1; class Constraint { public: enum MODE {NONE, MOVE, COPY}; /**< export mode type. */ /** * Construtor for constraint. */ Constraint(); /** * Destructor for constraint. */ ~Constraint(); public: /** * Test whether constraint is valid or not * @param time the specitic time to test. * @return true/false to indicate the result. */ bool isValid(long time) const; /** * Test whether constraint is unconstraint or not * @return true/false to indicate the result. */ bool isUnConstraint() const; /** * Test whether constraint is datetime related or not. * @return true/false to indicate the result. */ bool isDateTimeConstraint() const; /** * Test whether constraint contain interval or not * @return true/false to indicate the result. */ bool isIntervalConstraint() const; /** * Test whether constraint is timed count or not * @return true/false to indicate the result. */ bool isTimedCountConstraint() const; /** * Set the start time value of constraint. * @param time the specific time value. */ void setStartTime(long time); /** * Get the start time. * @return value of start time. */ long getStartTime() const; /** * Set the end time. * @param time the value of end time. */ void setEndTime(long time); /** * Get the end time. * @param return the value of end time. */ long getEndTime() const; /** * Set the accumulated . * @param time the specific time. */ void setAccumulated(long time); /** * Get the accumulated. * @return the value of accumulated */ long getAccumulated() const; /** * Set the count. * @param count the value of count. */ void setCount(int count); /** * Get the count. * @return value of count. */ int getCount() const; /** * Set the value of timer. * @param timer the value of the timer. */ void setTimer(int timer); /** * Get the timer. * @return value of time. */ int getTimer() const; /** * Set the timedCount. * @param timedCount the value of timedCount. */ void setTimedCount(int timedCount); /** * Get the timedCount. * @return the value of timedCount. */ int getTimedCount() const; /** * Set the interval. * @param interval the value of interval. */ void setInterval(int interval); /** * Get the interval. * @return the value of interval. */ int getInterval() const; /** * set export mode. * @param mode the mode type of export. */ void setExportMode(MODE mode); /** * Get the export mode. * @return the export mode. */ MODE getExportMode() const; /** * Consume the constraint. * @return true/false to indicate whether consume succesfully or not. */ bool consume(); PRIVATE: int mCount; /**< the count. */ int mTimedCount; /**< timed count. */ int mTimer; /**< timer for timed count. */ long mStart; /**< start time. */ long mEnd; /**< end time. */ int mInterval; /**< interval. */ long mAccumulated; /**< accumlated. */ vector<Context> mSystemList; /**< system list. */ MODE mExport; /**< export mode. */ }; #endif