PaddleCAPIPrivate.h 900 字节
Newer Older
Y
Yu Yang 已提交
1
#include "PaddleCAPI.h"
Y
Yu Yang 已提交
2
#include "paddle/gserver/gradientmachines/GradientMachine.h"
Y
Yu Yang 已提交
3 4 5 6 7 8 9 10
#include "paddle/math/Matrix.h"
#include "paddle/math/Vector.h"
#include "paddle/parameter/Argument.h"
#pragma once

namespace paddle {
namespace capi {

Y
Yu Yang 已提交
11 12 13 14 15 16 17 18 19 20 21 22 23
enum CType { kIVECTOR = 0, kMATRIX, kARGUMENTS, kGRADIENT_MACHINE };

#define STRUCT_HEADER CType type;

struct CHeader {
  STRUCT_HEADER
};

struct CIVector {
  STRUCT_HEADER
  IVectorPtr vec;

  CIVector() : type(kIVECTOR) {}
Y
Yu Yang 已提交
24 25 26
};

struct CMatrix {
Y
Yu Yang 已提交
27
  STRUCT_HEADER
Y
Yu Yang 已提交
28
  MatrixPtr mat;
Y
Yu Yang 已提交
29 30

  CMatrix() : type(kMATRIX) {}
Y
Yu Yang 已提交
31 32 33
};

struct CArguments {
Y
Yu Yang 已提交
34
  STRUCT_HEADER
Y
Yu Yang 已提交
35
  std::vector<paddle::Argument> args;
Y
Yu Yang 已提交
36 37

  CArguments() : type(kARGUMENTS) {}
Y
Yu Yang 已提交
38 39
};

Y
Yu Yang 已提交
40
struct CGradientMachine {
Y
Yu Yang 已提交
41
  STRUCT_HEADER
Y
Yu Yang 已提交
42
  paddle::GradientMachinePtr machine;
Y
Yu Yang 已提交
43 44

  CGradientMachine() : type(kGRADIENT_MACHINE) {}
Y
Yu Yang 已提交
45 46
};

Y
Yu Yang 已提交
47 48 49 50 51 52
template <typename T>
inline T* cast(void* ptr) {
  return reinterpret_cast<T*>(ptr);
}
}
}