summaryrefslogtreecommitdiff
path: root/ACEXML/compass/SoftPkg.h
blob: 5cadaf5444c011e265403d3b9199245080930c76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// $Id$

#ifndef ACEXML_SOFTPKG_H
#define ACEXML_SOFTPKG_H

#include "ace/pre.h"
#include "ACEXML/compass/Compass_Export.h"

#if !defined (ACE_LACKS_PRAGMA_ONCE)
#pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#include "ACEXML/common/XML_Types.h"
#include "ace/Unbounded_Set.h"

class Compass_Export ACEXML_SoftPkg
{
public:
  typedef ACEXML_String Localfile;
  typedef ACEXML_String Fileinarchive;
  typedef ACEXML_String EntryPoint;
  typedef ACEXML_String Processor;
  typedef ACEXML_String Compiler;
  typedef ACEXML_String ProgLang;

  struct PropertyFile
  {
    Fileinarchive file_;
    void dump(void) const;
  };

  struct Dependency
  {
    ACEXML_String type_;
    Localfile     localfile_;
    void dump(void) const;
  };
  struct OperSys
  {
    ACEXML_String name_;
    ACEXML_String version_;
    void dump(void) const;
  };
  struct Code
  {
    ACEXML_String type_;
    Fileinarchive file_;
    EntryPoint    func_;
    void dump(void) const;
  };
  struct Implementation
  {
    ACEXML_String   id_;
    OperSys         os_;
    Processor       cpu_;
    Compiler        compiler_;
    ProgLang        lang_;
    PropertyFile    propfile_;
    Code            code_;
    void dump(void) const;
  };
  typedef ACE_Unbounded_Set<Dependency*> Dependencies;
  typedef ACE_Unbounded_Set_Iterator<Dependency*> DEP_ITERATOR;
  typedef ACE_Unbounded_Set<Implementation*> Implementations;
  typedef ACE_Unbounded_Set_Iterator<Implementation*> IMPL_ITERATOR;

  ACEXML_SoftPkg();
  ~ACEXML_SoftPkg();
  int start_element (const ACEXML_Char* element, const ACEXML_String& id);
  void end_element (const ACEXML_Char* element);
  const Implementations& get_impls (void) const;
  const Dependencies& get_deps (void) const;
  int set (const ACEXML_Char* element,
           const ACEXML_String& attname,
           const ACEXML_String& value);
  void dump(void) const;
private:
  ACEXML_String name_;
  ACEXML_String version_;
  ACEXML_String pkgtype_;
  ACEXML_String title_;
  ACEXML_String description_;
  PropertyFile  propfile_;
  Code* current_code_;
  Dependency* current_dep_;
  Implementation* current_impl_;
  Implementations impls_;
  Dependencies deps_;
};

#include "ace/post.h"

#endif /* ACEXML_SOFTPKG_H */