Software and Services, Portable Libraries  2019.Mar.01
A library for managing digital certificates
binary.hpp
Go to the documentation of this file.
1 //
2 // BEGIN_DOUGLAS_MARK_ROYER_COPYRIGHT
3 //
4 // Copyright (C) 1993-2012 Douglas Mark Royer, All Rights Reserved.
5 //
6 // NOTICE:
7 //
8 // THIS SOURCE CODE BELONGS TO DOUGLAS MARK ROYER
9 // THIS CODE IS CONSIDERED A
10 // TRADE SECRET AND IS NOT TO BE DIVULGED OR USED BY PARTIES WHO HAVE
11 // NOT RECEIVED WRITTEN AUTHORIZATION FROM THE OWNER.
12 //
13 //
14 // THIS SOFTWARE AND MANUAL ARE BOTH PROTECTED BY UNITED STATES
15 // COPYRIGHT LAW (TITLE 17 UNITED STATES CODE). UNAUTHORIZED REPRODUCTION
16 // AND/OR SALE MAY RESULT IN IMPRISONMENT OF UP TO ONE YEAR AND FINES
17 // OF UP TO $100,000 (17 USC 506). COPYRIGHT INFRINGERS MAY ALSO
18 // BE SUBJECT TO CIVIL LIABILITY.
19 //
20 // THIS NOTICE AND THE ABOVE COPYRIGHT NOTICE MUST REMAIN IN ALL
21 // COPIES AND ANY DERIVED WORK.
22 //
23 // ALL OF THIS CODE IS ORIGINAL WORK BY THE COPYRIGHT HOLDER.
24 //
25 // THIS DOCUMENT AND THE INFORMATION CONTAINED HEREIN IS
26 // PROVIDED ON AN "AS IS" BASIS AND INET-CONSULTING.COM, INC.
27 // DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
28 // NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
29 // HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
30 // WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
31 // PURPOSE. ANY SERVICE CONTRACT WILL BE UNDER A SEPARATE
32 // LICENSE.
33 //
34 // END_DOUGLAS_MARK_ROYER_COPYRIGHT
35 //
36 
44 #ifndef __DOUGLAS_MARK_ROYER_LIBRARY_ICALENDAR_BINARY_HPP__
45 #define __DOUGLAS_MARK_ROYER_LIBRARY_ICALENDAR_BINARY_HPP__
46 
47 #ifndef EXPORT_ICALENDAR
48 #ifdef BUILDING_LIBRARY_ICALENDAR
49 #define EXPORT_ICALENDAR EXPORT_OUT
50 #else
51 #define EXPORT_ICALENDAR EXPORT_IN
52 #endif
53 #endif
54 
55 #ifdef BUILDING_LIBRARY_ICALENDAR
56 #include "iCalendar.hpp"
57 #include "BaseValueType.hpp"
58 #else
59 #include <SaS/iCalendar/iCalendar.hpp>
60 #include <SaS/iCalendar/BaseValueType.hpp>
61 #endif
62 
63 using namespace std;
67 
68 namespace SoftwareAndServices
69 {
70  namespace Library
71  {
72  namespace iCalendar
73  {
74  /*
75  * @class binary
76  * This object holds RFC-iCalendar BINARY data.
77  */
78  class EXPORT_ICALENDAR binary
79  : public BaseValueType
80  {
81 
82  public:
83 
89  UnknownEncoding_t = UnknownToken_t,
90  Base64Encoding_t = BASE64,
91  EightBitEncoding_t = EIGHT_BIT
92  };
93 
103  binary(unsigned char * data = NULL, const size_t octetCount = 0);
104 
108  virtual ~binary();
109 
118  bool encode(BinaryEncodingType desiredType);
119 
130  bool decode(const char * buffer, BinaryEncodingType encoding = Base64Encoding_t);
131 
142  void * get(size_t * size) const;
143 
151  virtual bool sprint(String * Results) const;
152 
166  bool parse(Parse & in, BinaryEncodingType encoding, component * errors);
167 
175  bool operator==(const binary & Other);
176 
184  bool operator==(const binary * Other);
185 
193  bool operator!=(const binary & Other);
194 
202  bool operator!=(const binary * Other);
203 
204  protected:
205 
210 
214  unsigned char * _blob;
215 
219  size_t _size;
220  };
221 
225  typedef vector<binary*> binaryVec;
226 
227  }
228  }
229 }
230 
231 #endif /*__DOUGLAS_MARK_ROYER_LIBRARY_ICALENDAR_BINARY_HPP__*/
An RFC-iCalendar implementation of ENCODING parameter.
Definition: encoding.hpp:77
STL namespace.
Generic text parsing routines.
Definition: Parse.hpp:102
size_t _size
The size of data that _blob points to.
Definition: binary.hpp:219
BinaryEncodingType
The type of binary encoding.
Definition: binary.hpp:88
This is a class that allows:
Definition: String.hpp:114
Copyright Douglas Mark Royer DouglasRoyer@gmail.com.
Definition: Base.hpp:98
unsigned char * _blob
The blob of data.
Definition: binary.hpp:214
The base class for calendar objects.
Definition: iCalendar.hpp:434
All (almost all) values are derived from this base class.
BinaryEncodingType _encoding
The encoding of this data.
Definition: binary.hpp:209
Base class for all RFC-iCalendar components.
Definition: component.hpp:98