B64STRAW.H 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. ** Command & Conquer Red Alert(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. /* $Header: /CounterStrike/B64STRAW.H 1 3/03/97 10:24a Joe_bostic $ */
  19. /***********************************************************************************************
  20. *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
  21. ***********************************************************************************************
  22. * *
  23. * Project Name : Command & Conquer *
  24. * *
  25. * File Name : B64STRAW.H *
  26. * *
  27. * Programmer : Joe L. Bostic *
  28. * *
  29. * Start Date : 07/02/96 *
  30. * *
  31. * Last Update : July 2, 1996 [JLB] *
  32. * *
  33. *---------------------------------------------------------------------------------------------*
  34. * Functions: *
  35. * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
  36. #ifndef B64STRAW_H
  37. #define B64STRAW_H
  38. #include "straw.h"
  39. /*
  40. ** Performs Base 64 encoding/decoding on the data that is drawn through the straw. Note that
  41. ** encoding increases the data size by about 30%. The reverse occurs when decoding.
  42. */
  43. class Base64Straw : public Straw
  44. {
  45. public:
  46. typedef enum CodeControl {
  47. ENCODE,
  48. DECODE
  49. } CodeControl;
  50. Base64Straw(CodeControl control) : Control(control), Counter(0) {}
  51. virtual int Get(void * source, int slen);
  52. private:
  53. /*
  54. ** Indicates if this is for encoding or decoding of Base64 data.
  55. */
  56. CodeControl Control;
  57. /*
  58. ** The counter of the number of accumulated bytes pending for processing.
  59. */
  60. int Counter;
  61. /*
  62. ** Buffer that holds the Base64 coded bytes. This will be the staging buffer if
  63. ** this is for a decoding process. Otherwise, it will be used as a scratch buffer.
  64. */
  65. char CBuffer[4];
  66. /*
  67. ** Buffer that holds the plain bytes. This will be the staging buffer if this
  68. ** is for an encoding process. Otherwise, it will be used as a scratch buffer.
  69. */
  70. char PBuffer[3];
  71. /*
  72. ** Explicitly disable the copy constructor and the assignment operator.
  73. */
  74. Base64Straw(Base64Straw & rvalue);
  75. Base64Straw & operator = (Base64Straw const & pipe);
  76. };
  77. #endif