Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
2.5 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. //=============================================================================
  4. #ifndef INPUTOUTPUT_H
  5. #define INPUTOUTPUT_H
  6. #ifdef _WIN32
  7. #pragma once
  8. #endif
  9. #include <utlvector.h>
  10. #include "fgdlib/EntityDefs.h"
  11. enum InputOutputType_t
  12. {
  13. iotInvalid = -1,
  14. iotVoid,
  15. iotInt,
  16. iotBool,
  17. iotString,
  18. iotFloat,
  19. iotVector,
  20. iotEHandle,
  21. iotColor,
  22. };
  23. //-----------------------------------------------------------------------------
  24. // Purpose:
  25. //-----------------------------------------------------------------------------
  26. class CClassInputOutputBase
  27. {
  28. public:
  29. CClassInputOutputBase(void);
  30. CClassInputOutputBase(const char *pszName, InputOutputType_t eType);
  31. virtual ~CClassInputOutputBase(void);
  32. inline const char *GetName(void) { return(m_szName); }
  33. InputOutputType_t GetType(void) { return(m_eType); }
  34. const char *GetTypeText(void);
  35. inline const char *GetDescription(void);
  36. inline void SetName(const char *szName) { V_strcpy_safe(m_szName, szName); }
  37. inline void SetType(InputOutputType_t eType) { m_eType = eType; }
  38. InputOutputType_t SetType(const char *szType);
  39. inline void SetDescription(char *pszDescription) { m_pszDescription = pszDescription; }
  40. CClassInputOutputBase &operator =(CClassInputOutputBase &);
  41. protected:
  42. static char *g_pszEmpty;
  43. char m_szName[MAX_IO_NAME_LEN];
  44. InputOutputType_t m_eType;
  45. char *m_pszDescription;
  46. };
  47. //-----------------------------------------------------------------------------
  48. // Purpose: Returns this I/O's long description.
  49. //-----------------------------------------------------------------------------
  50. const char *CClassInputOutputBase::GetDescription(void)
  51. {
  52. if (m_pszDescription != NULL)
  53. {
  54. return(m_pszDescription);
  55. }
  56. return(g_pszEmpty);
  57. }
  58. //-----------------------------------------------------------------------------
  59. // Purpose:
  60. //-----------------------------------------------------------------------------
  61. class CClassInput : public CClassInputOutputBase
  62. {
  63. public:
  64. CClassInput(void);
  65. CClassInput(const char *pszName, InputOutputType_t eType);
  66. };
  67. //-----------------------------------------------------------------------------
  68. // Purpose:
  69. //-----------------------------------------------------------------------------
  70. class CClassOutput : public CClassInputOutputBase
  71. {
  72. public:
  73. CClassOutput(void);
  74. CClassOutput(const char *pszName, InputOutputType_t eType);
  75. };
  76. typedef CUtlVector<CClassInput *> CClassInputList;
  77. typedef CUtlVector<CClassOutput *> CClassOutputList;
  78. #endif // INPUTOUTPUT_H