MinitScript  0.9.31 PRE-BETA
HTTPDownloadClientClass.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 #include <span>
5 #include <vector>
6 
8 
12 
13 using std::shared_ptr;
14 using std::span;
15 using std::vector;
16 
19 
20 /**
21  * HTTP download client
22  * @author Andreas Drewke
23  */
25 private:
27 
28  // overridden methods
29  void registerConstants(MinitScript* minitScript) const override;
30  void registerMethods(MinitScript* minitScript) const override;
31  void unsetVariableValue(MinitScript::Variable& variable) const override;
32  void setVariableValue(MinitScript::Variable& variable) const override;
33  void setVariableValue(MinitScript::Variable& variable, const void* value) const override;
34  void copyVariable(MinitScript::Variable& to, const MinitScript::Variable& from) const override;
35  bool mul(MinitScript* minitScript, const span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) const override;
36  bool div(MinitScript* minitScript, const span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) const override;
37  bool add(MinitScript* minitScript, const span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) const override;
38  bool sub(MinitScript* minitScript, const span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) const override;
39  DataType::ScriptContext* createScriptContext() const override;
40  void deleteScriptContext(DataType::ScriptContext* context) const override;
41  void garbageCollection(DataType::ScriptContext* context) const override;
42 
43 public:
44  /**
45  * Script context
46  */
48  public:
49  /**
50  * Constructor
51  */
53 
54  /**
55  * @return instances
56  */
57  inline vector<shared_ptr<_HTTPDownloadClient>>& getInstances() {
58  return instances;
59  }
60  private:
61  vector<shared_ptr<_HTTPDownloadClient>> instances;
62  };
63 
64  // forbid class copy
66 
67  /**
68  * Initialize
69  */
70  static void initialize();
71 
72  /**
73  * Get HTTPDownloadClient value from given variable
74  * @param arguments arguments
75  * @param idx argument index
76  * @param value value
77  * @param optional optional
78  * @return success
79  */
80  static inline bool getHTTPDownloadClientValue(const span<MinitScript::Variable>& arguments, int idx, shared_ptr<_HTTPDownloadClient>& value, bool optional = false) {
81  if (idx >= arguments.size()) return optional;
82  const auto& argument = arguments[idx];
83  if (argument.getType() == MinitScript::TYPE_HTTPDOWNLOADCLIENT) {
84  value = *static_cast<shared_ptr<_HTTPDownloadClient>*>(argument.getValuePtr());
85  return true;
86  }
87  return optional;
88 
89  }
90 
91  /**
92  * MinitScript HTTP download client class
93  */
95  //
96  }
97 
98  // overridden methods
99  const string& getTypeAsString() const override;
100  const string getValueAsString(const MinitScript::Variable& variable) const override;
101 
102 };
bool sub(MinitScript *minitScript, const span< MinitScript::Variable > &arguments, MinitScript::Variable &returnValue, const MinitScript::SubStatement &subStatement) const override
Subtraction.
static MINITSCRIPT_STATIC_DLL_IMPEXT const string TYPE_NAME
static bool getHTTPDownloadClientValue(const span< MinitScript::Variable > &arguments, int idx, shared_ptr< _HTTPDownloadClient > &value, bool optional=false)
Get HTTPDownloadClient value from given variable.
bool mul(MinitScript *minitScript, const span< MinitScript::Variable > &arguments, MinitScript::Variable &returnValue, const MinitScript::SubStatement &subStatement) const override
Multiply.
void setVariableValue(MinitScript::Variable &variable) const override
Set variable value.
void deleteScriptContext(DataType::ScriptContext *context) const override
bool add(MinitScript *minitScript, const span< MinitScript::Variable > &arguments, MinitScript::Variable &returnValue, const MinitScript::SubStatement &subStatement) const override
Addition.
HTTPDownloadClientClass()
MinitScript HTTP download client class.
bool div(MinitScript *minitScript, const span< MinitScript::Variable > &arguments, MinitScript::Variable &returnValue, const MinitScript::SubStatement &subStatement) const override
Division.
void garbageCollection(DataType::ScriptContext *context) const override
void registerConstants(MinitScript *minitScript) const override
Register constants.
void registerMethods(MinitScript *minitScript) const override
Register methods.
DataType::ScriptContext * createScriptContext() const override
Create script context.
const string getValueAsString(const MinitScript::Variable &variable) const override
Returns value as string.
void copyVariable(MinitScript::Variable &to, const MinitScript::Variable &from) const override
Copy variable.
void unsetVariableValue(MinitScript::Variable &variable) const override
Unset variable value.
DataType(bool mathDataType, bool requiresGarbageCollection)
Data type.
Definition: MinitScript.h:404
#define MINITSCRIPT_STATIC_DLL_IMPEXT
Definition: minitscript.h:18
#define _FORBID_CLASS_COPY(CLASS)
Definition: minitscript.h:9