1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /* ---------------------------------------------------------------------------
- Nullsoft Database Engine
- --------------------
- codename: Near Death Experience
- --------------------------------------------------------------------------- */
- /* ---------------------------------------------------------------------------
- IntegerField Class Prototypes
- --------------------------------------------------------------------------- */
- #ifndef __INTEGERFIELD_H
- #define __INTEGERFIELD_H
- #include <bfc/platform/types.h>
- class TimeParse {
- public:
- int is_relative; // ago/after/before used
- int absolute_datetime; // if not is_relative, this is the date/time, otherwise it's the resulting date/time if the query was ran now
- int absolute_hasdate; // if not, use only the time portion of absolute_datetime, the rest is now
- int absolute_hastime; // if not, use only the date portion of absolute_datetime, the rest is now
- int relative_year; // -1 = this year
- int relative_month; // -1 = this month
- int relative_day; // -1 = this day, -2 = this week
- int relative_hour; // -1 = this hour
- int relative_min; // -1 = this minute
- int relative_sec; // -1 = this second
- int relative_kwday; // not used(-1), 0 to 6 for sunday to saturday, yesterday(7), today(8), tomorrow(9)
- int offset_value; // timeago/offsetby numerical edit field
- int offset_what; // not used(-1) years(0), months(1), weeks(2), days(3), hours(4), minutes(5), seconds(6)
- int offset_whence; // not used(-1), after(0), ago/before(1)
- int offset_used; // if 1, 'time ago' / 'offset by' should be checked
- };
- class IntegerField : public Field
- {
- protected:
- virtual void ReadTypedData(const uint8_t *, size_t len);
- virtual void WriteTypedData(uint8_t *, size_t len);
- virtual size_t GetDataSize(void);
- virtual int Compare(Field *Entry);
- virtual bool ApplyFilter(Field *Data, int op);
- void InitField(void);
- int Value;
- enum {
- WHAT_YEARS,
- WHAT_MONTHS,
- WHAT_WEEKS,
- WHAT_DAYS,
- WHAT_HOURS,
- WHAT_MINUTES,
- WHAT_SECONDS,
- };
- enum {
- FROM_BARE,
- FROM_AGO,
- FROM_SINCE,
- };
- public:
- ~IntegerField();
- IntegerField(int);
- IntegerField();
- int GetValue(void);
- void SetValue(int);
- int ApplyConversion(const wchar_t *format, TimeParse *tp=NULL);
- #ifdef _WIN32
- static int LookupToken(const wchar_t *t);
- #else
- static int LookupToken(CFStringRef t);
- #endif
- };
- class DateTimeField : public IntegerField {
- public:
- DateTimeField();
- DateTimeField(int Val);
- virtual ~DateTimeField();
- };
- class LengthField : public IntegerField {
- public:
- LengthField();
- LengthField(int Val);
- virtual ~LengthField();
- };
- #endif
|