1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 #ifndef _LOG4CXX_HELPERS_DATE_FORMAT_H 19 #define _LOG4CXX_HELPERS_DATE_FORMAT_H 20 21 #include <log4cxx/helpers/timezone.h> 22 23 24 namespace log4cxx 25 { 26 namespace helpers 27 { 28 29 /** 30 * DateFormat is an abstract class for date/time formatting 31 * patterned after java.text.DateFormat. 32 */ 33 class LOG4CXX_EXPORT DateFormat : public ObjectImpl 34 { 35 public: 36 DECLARE_ABSTRACT_LOG4CXX_OBJECT(DateFormat) 37 BEGIN_LOG4CXX_CAST_MAP() 38 LOG4CXX_CAST_ENTRY(DateFormat) 39 END_LOG4CXX_CAST_MAP() 40 41 /** 42 * Destructor 43 */ 44 virtual ~DateFormat(); 45 46 /** 47 * Formats an log4cxx_time_t into a date/time string. 48 * @param s string to which the date/time string is appended. 49 * @param tm date to be formatted. 50 * @param p memory pool used during formatting. 51 */ 52 virtual void format(LogString& s, log4cxx_time_t tm, log4cxx::helpers::Pool& p) const = 0; 53 54 /** 55 * Sets the time zone. 56 * @param zone the given new time zone. 57 */ 58 virtual void setTimeZone(const TimeZonePtr& zone); 59 60 /** 61 * Format an integer consistent with the format method. 62 * @param s string to which the numeric string is appended. 63 * @param n integer value. 64 * @param p memory pool used during formatting. 65 * @remarks This method is used by CachedDateFormat to 66 * format the milliseconds. 67 */ 68 virtual void numberFormat(LogString& s, int n, log4cxx::helpers::Pool& p) const; 69 70 71 protected: 72 /** 73 * Constructor. 74 */ 75 DateFormat(); 76 77 private: 78 /** 79 * Copy constructor definition to prevent copying. 80 */ 81 DateFormat(const DateFormat&); 82 /** 83 * Assignment definition to prevent assignment. 84 */ 85 DateFormat& operator=(const DateFormat&); 86 }; 87 LOG4CXX_PTR_DEF(DateFormat); 88 89 90 } // namespace helpers 91 } // namespace log4cxx 92 93 #endif //_LOG4CXX_HELPERS_DATE_FORMAT_H 94