//////////////////////////////////////////////////////////////////////////////
//
//  Copyright 2025 by Autodesk, Inc.  All rights reserved.
//
// This computer source code and related instructions and comments 
// are the unpublished confidential and proprietary information of 
// Autodesk, Inc. and are protected under applicable copyright and 
// trade secret law.  They may not be disclosed to, copied or used 
// by any third party without the prior written consent of Autodesk, Inc.
//
//////////////////////////////////////////////////////////////////////////////
#ifndef __STDJIS_H
#define __STDJIS_H

#ifndef __STDISO_H
#error include 'stdISO.h' before including this file
#endif

#include "AdAChar.h"

///<summary>This is class AcmStandardJIS.</summary>
class STDIMP_DLLSHARE AcmStandardJIS : public AcmStandard
{
public:
  ACRX_DECLARE_MEMBERS(AcmStandardJIS);
  AcmStandardJIS();
  virtual ~AcmStandardJIS();
  ///<summary>Gets the original name of the standard.</summary>
  virtual LPCTSTR originalName() const;             
  ///<summary>This function initializes the internal structure of the standard.</summary>
  virtual Adesk::Boolean acmInit();             
  ///<summary>Returns a list of all supported text heights that conform to the standard setting.</summary>
  virtual void getTextHeightList(AcGeDoubleArray& txtArr) const;
  ///<summary>This function is used to initialize the standard.</summary>
  virtual Adesk::Boolean setFactoryDefaults();
  virtual Adesk::Boolean setDimDefaults();

protected:
  ///<summary>Constructs arrow services objects.</summary>
  virtual void initArrowServices();
  virtual Adesk::Boolean createDefaultStyle();
};                      

///<summary>This is class AcmSurfTextStdJIS.</summary>
class STDIMP_DLLSHARE AcmSurfTextStdJIS : public AcmSurfTextStd
{
public:
  ACRX_DECLARE_MEMBERS(AcmSurfTextStdJIS);
  AcmSurfTextStdJIS();
  virtual ~AcmSurfTextStdJIS();
  ///<summary>Gets the information about the standard name and revision.</summary>
  Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const override;
  ///<summary>Provides the basic interface for the AcmStandardManager and hence determines whether AcmSymbolSTD 
  ///can be used for a particular standard.</summary>
  Adesk::Boolean   isCompatibleTo(const AcmStandard* pStd) const override;
  void initToEditOriginal() const override;
  void initToEdit() const override;
  ///<summary>Sets the factory default values.</summary>
  Adesk::Boolean setFactoryDefaults() override;
  ///<summary>Gets a direction of lay symbol descriptor.</summary>
  Adesk::Boolean getLaySymbolList(AcmCObjArray<AcmSymbolDesc4CL>& list,
                                          const AcmCSurfText* pSubSym =NULL) const override;
  ///<summary>Sets the visibility status for all values in the surface texture sub-symbol.</summary>
  Acm::ErrorStatus checkVisibility(AcmCSurfText* pData) const override;
  ///<summary>Sets the initial status of variables.</summary>
  Acm::ErrorStatus initFields(AcmCSurfText* pData) const override;
  ///<summary>Sets the suggested values for any value in the sub-symbol.</summary>
  Acm::ErrorStatus setSuggested(AcmCSurfText* pData) const override;
  ///<summary>Returns an array of graphical sub-entities representative of "Production Method" field variables in 
  ///the given Surface Texture symbol.</summary>
  ///<param name="pSubSym">Surface Texture symbol of interest.</param>
  ///<param name="subents">Array of graphical sub-entities.</param>
  ///<param name="fullExtent">Geometrical extents of the array of sub-entities.</param>
  ///<param name="txtHeight">Text height to be applied to the sub-entities.</param>
  ///<param name="commonWidth">Horizontal displacement of the sub-entities from the reference point.</param>
  ///<param name="refPoint">Reference position used to position the array of graphical sub-entities.</param>
  ///<returns>true if the array is populated successfully, false if the array fails to be populated.</returns>
  bool getSubEntsProd1(const AcmCSurfText* pSubSym,
                               AcmCAuxEntArray& subents,
                               AcDbExtents& fullExtent,
                               double txtHeight,
                               double& commonWidth,
                               AcGePoint3d& refPoint) const override;
  ///<summary>Returns an array of graphical sub-entities representative of "Cut Off" field variable in the given 
  ///Surface Texture symbol.</summary>
  ///<param name="pSubSym">Surface Texture symbol of interest.</param>
  ///<param name="subents">Array of graphical sub-entities.</param>
  ///<param name="fullExtent">Geometrical extents of the array of sub-entities.</param>
  ///<param name="txtHeight">Text height to be applied to the sub-entities.</param>
  ///<param name="commonWidth">Horizontal displacement of the sub-entities from the reference point.</param>
  ///<param name="refPoint">Reference position used to position the array of graphical sub-entities.</param>
  ///<returns>true if the array is populated successfully, false if the array fails to be populated.</returns>
  bool getSubEntsCutoff(const AcmCSurfText* pSubSym,
                                AcmCAuxEntArray& subents,
                                AcDbExtents& fullExtent,
                                double txtHeight,
                                double& commonWidth,
                                AcGePoint3d& refPoint) const override;
  ///<summary>Returns an array of graphical sub-entities representative of "Other Value" field variable in the given 
  ///Surface Texture symbol.</summary>
  ///<param name="pSubSym">Surface Texture symbol of interest.</param>
  ///<param name="subents">Array of graphical sub-entities.</param>
  ///<param name="fullExtent">Geometrical extents of the array of sub-entities.</param>
  ///<param name="txtHeight">Text height to be applied to the sub-entities.</param>
  ///<param name="commonWidth">Horizontal displacement of the sub-entities from the reference point.</param>
  ///<param name="refPoint">Reference position used to position the array of graphical sub-entities.</param>
  ///<returns>true if the array is populated successfully, false if the array fails to be populated.</returns>
  bool getSubEntsOtherVal(const AcmCSurfText* pSubSym,
                                  AcmCAuxEntArray& subents,
                                  AcDbExtents& fullExtent,
                                  double txtHeight,
                                  double& commonWidth,
                                  AcGePoint3d& refPoint) const override;
  ///<summary>Returns the variable of the Surface Texture symbol standard that will hold the input value at the positional
  ///index (as shown in the diagram below).</summary>
  ///<param name="dlgIndex">Positional index (See diagram). DO_IMAGE images/surface_texture_requirement.png</param>
  ///<param name="var">Variable in Surface Texture symbol standard.</param>
  ///<returns>Acad::eOk = If the variable is valid in the Surface Texture symbol standard. Acad::eInvalidInput = If 
  ///the index is not valid in the Surface Texture symbol standard.</returns>
  Acad::ErrorStatus getVarFromDlgIndex(Adesk::UInt8 dlgIndex, Acm::Variable& var) const override;
  ///<summary>Returns the editability and other information of the drop-down list (Combo box) in Surface Texture 
  ///symbol standard dialog.</summary>
  ///<param name="var">Variable in Surface Texture symbol standard.</param>
  ///<param name="varDlgInfo">Information of the drop-down list.</param>
  AcmSurfTextStd::ConfigListState checkConfigListState(Acm::Variable var, CVarDlgInfo& varDlgInfo) const override;
  ///<summary>Restore the drop down lists for all variables of surface texture symbol standard to the default
  ///preset lists.</summary>
  void restoreAllSuggestedList() override;
  void getDefaultVarSuggestList(Acm::Variable var, CStringList& list) const override;
  ///<summary>Returns an array of graphical sub-entities representative of "Reference" field variable in the 
  ///given Surface Texture symbol.</summary>
  ///<param name="pSubSym">Surface Texture symbol of interest.</param>
  ///<param name="subents">Array of graphical sub-entities.</param>
  ///<param name="fullExtent">Geometrical extents of the array of sub-entities.</param>
  ///<param name="txtHeight">Text height to be applied to the sub-entities.</param>
  ///<param name="commonWidth">Horizontal displacement of the sub-entities from the reference point.</param>
  ///<param name="refPoint">Reference position used to position the array of graphical sub-entities.</param>
  ///<returns>true if the array is populated successfully, false if the array fails to be populated.</returns>
  bool getSubEntsReference(const AcmCSurfText* pSubSym,
                                   AcmCAuxEntArray& subents,
                                   AcDbExtents& fullExtent,
                                   double txtHeight,
                                   double& commonWidth,
                                   AcGePoint3d& refPoint) const override;

protected:
  ///<summary>Gets the height of the symbol.</summary>
  ///<param name="pSymb">Surface texture symbol of interest.</param>
  ///<param name="H1">Reference height 1.</param>
  ///<param name="H2">Reference height 2.</param>
  void getHeights(const AcmCSurfText* pSymb,
                          double& H1,
                          double& H2) const override;
};                      

///<summary>The AcmSurfTextStdJIS2003 class is a derived class of the AcmSurfTextStdJIS class. The usage of 
///AcmSurfTextStdJIS2003 class is the same as that of AcmSurfTextStd class.</summary>
class STDIMP_DLLSHARE AcmSurfTextStdJIS2003 : public AcmSurfTextStdJIS
{
public:
  ACRX_DECLARE_MEMBERS(AcmSurfTextStdJIS2003);
  AcmSurfTextStdJIS2003();
  virtual ~AcmSurfTextStdJIS2003();
  ///<summary>Sets the factory default values.</summary>
  Adesk::Boolean setFactoryDefaults() override;
  ///<summary>Gets a direction of lay symbol descriptor.</summary>
  Adesk::Boolean getLaySymbolList(AcmCObjArray<AcmSymbolDesc4CL>& list,
                                          const AcmCSurfText* pSubSym =NULL) const override;
  ///<summary>Gets the information about the standard name and revision.</summary>
  Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const override;
  void initToEditOriginal() const override;
  void initToEdit() const override;
  ///<summary>Returns the variable of the Surface Texture symbol standard that will hold the input value at the 
  ///positional index (as shown in the diagram below).</summary>
  ///<param name="dlgIndex">Positional index (See diagram). DO_IMAGE images/surface_texture_requirement.png</param>
  ///<param name="var">Variable in Surface Texture symbol standard.</param>
  ///<returns>Acad::eOk = If the variable is valid in the Surface Texture symbol standard. Acad::eInvalidInput = If 
  ///the index is not valid in the Surface Texture symbol standard.</returns>
  Acad::ErrorStatus getVarFromDlgIndex(Adesk::UInt8 dlgIndex, Acm::Variable& var) const override;
  ///<summary>Returns the editability and other information of the drop-down list (Combo box) in Surface Texture
  ///symbol standard dialog.</summary>
  ///<param name="var">Variable in Surface Texture symbol standard.</param>
  ///<param name="varDlgInfo">Information of the drop-down list.</param>
  AcmSurfTextStd::ConfigListState checkConfigListState(Acm::Variable var, CVarDlgInfo& varDlgInfo) const override;
  ///<summary>Sets the visibility status for all values in the surface texture sub-symbol.</summary>
  Acm::ErrorStatus checkVisibility(AcmCSurfText* pData) const override;
  ///<summary>Sets the initial status of variables.</summary>
  Acm::ErrorStatus initFields(AcmCSurfText* pData) const override;
  ///<summary>Sets the suggested values for any value in the sub-symbol.</summary>
  Acm::ErrorStatus setSuggested(AcmCSurfText* pData) const override;
  ///<summary>Restore the drop down lists for all variables of surface texture symbol standard to the default 
  ///preset lists.</summary>
  void restoreAllSuggestedList() override;
  void getDefaultVarSuggestList(Acm::Variable var, CStringList& list) const override;
  ///<param name="symArray ">Array indicating state of selection of direction of lay symbols.</param>
  void getDefaultLaySymbols(AcDbIntArray& symArray) const override;
  ///<summary>Returns an array of graphical sub-entities representative of ?Production Method? field variables in
  ///the given Surface Texture symbol.</summary>
  ///<param name="pSubSym">Surface Texture symbol of interest.</param>
  ///<param name="subents">Array of graphical sub-entities.</param>
  ///<param name="fullExtent">Geometrical extents of the array of sub-entities.</param>
  ///<param name="txtHeight">Text height to be applied to the sub-entities.</param>
  ///<param name="commonWidth">Horizontal displacement of the sub-entities from the reference point.</param>
  ///<param name="refPoint">Reference position used to position the array of graphical sub-entities.</param>
  ///<returns>true if the array is populated successfully, false if the array fails to be populated.</returns>
  bool getSubEntsProd1(const AcmCSurfText* pSubSym,
                               AcmCAuxEntArray& subents,
                               AcDbExtents& fullExtent,
                               double txtHeight,
                               double& commonWidth,
                               AcGePoint3d& refPoint) const override;
  ///<summary>Returns true if this symbol standard supports surface indication leader. 
  ///Otherwise, returns false.</summary>
  Adesk::Boolean isSurfIndLeaderSupported() const override;

protected:
  ///<summary>Gets the height of the symbol.</summary>
  ///<param name="pSymb">Surface texture symbol of interest.</param>
  ///<param name="H1">Reference height 1.</param>
  ///<param name="H2">Reference height 2.</param>
  void getHeights(const AcmCSurfText* pSymb,
                          double& H1,
                          double& H2) const override;
};                      

///<summary>This derived class implements standard-specific versions of functions available in the AcmFCFStd
///class. Refer to the AcmFCFStd class for further information.</summary>
class STDIMP_DLLSHARE AcmFCFStdJIS : public AcmFCFStd
{
public:
  ACRX_DECLARE_MEMBERS(AcmFCFStdJIS);
  AcmFCFStdJIS();
  virtual ~AcmFCFStdJIS();
  ///<summary>Gets the information about the standard name and revision.</summary>
  virtual Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const;
  ///<summary>Provides the basic interface for the AcmStandardManager and hence determines whether AcmSymbolSTD 
  ///can be used for a particular standard.</summary>
  virtual Adesk::Boolean   isCompatibleTo(const AcmStandard* pStd) const;
  ///<summary>Sets the factory default values.</summary>
  virtual Adesk::Boolean setFactoryDefaults();
  void initToEditOriginal() const override;
  void initToEdit() const override;
  ///<summary>Get the list of all arrowheads or all standard-supported arrowheads for the FCF symbol std. It will
  ///return additional arrowheads on top of those available in AcmSymbolStd.</summary>
  Adesk::Boolean getArrowDesc(AcmCObjArray<AcmCArrowDesc>& list,
                              Adesk::Boolean allSrv = Adesk::kTrue,
                              Adesk::Boolean bDarkTheme = Adesk::kFalse) const override;
  ///<summary>Returns the list of available material removal characteristics.</summary>
  virtual Adesk::Boolean getMat(AcmCObjArray<AcmCGDTSymbolDesc>& list) const;
  ///<summary>Checks whether the symbol data is visible or not.</summary>
  virtual Acm::ErrorStatus checkVisibility(AcmCFCF* pData) const;
  ///<summary>Gets the sub-entities for the all-around symbol.</summary>
  void getSubEntsAllAround(AcmCAuxEntArray& subents, Acm::SurfTextAppModifierType flag,
                                   const AcGeMatrix3d& mat) const override;
  ///<summary>This function is used to return the default secondary arrow type for symbol.</summary>
  virtual Acm::ArrowType defaultSecondaryArrowType() const;
};                      

///<summary>This is class AcmFCFStdJIS98.</summary>
class STDIMP_DLLSHARE AcmFCFStdJIS98 : public AcmFCFStdJIS
{
public:
  ACRX_DECLARE_MEMBERS(AcmFCFStdJIS98);
  AcmFCFStdJIS98();
  virtual ~AcmFCFStdJIS98();
  ///<summary>Gets the information about the standard name and revision.</summary>
  virtual Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const;
  ///<summary>Returns the list of available material removal characteristics.</summary>
  virtual Adesk::Boolean getMat(AcmCObjArray<AcmCGDTSymbolDesc>& list) const;
  ///<summary>This function is used to return the default secondary arrow type for symbol.</summary>
  virtual Acm::ArrowType defaultSecondaryArrowType() const;
  ///<summary>Returns true if this symbol standard supports surface indication leader. 
  ///Otherwise, returns false.</summary>
  virtual Adesk::Boolean isSurfIndLeaderSupported() const;
};                      

///<summary>This is class AcmWeldingStdJIS.</summary>
class STDIMP_DLLSHARE AcmWeldingStdJIS : public AcmWeldingStd
{
public:
  ACRX_DECLARE_MEMBERS(AcmWeldingStdJIS);
  AcmWeldingStdJIS();
  virtual ~AcmWeldingStdJIS();
  ///<summary>Gets the information about the standard name and revision.</summary>
  virtual Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const;
  ///<summary>Provides the basic interface for the AcmStandardManager and hence determines whether AcmSymbolSTD 
  ///can be used for a particular standard.</summary>
  virtual Adesk::Boolean   isCompatibleTo(const AcmStandard* pStd) const;
  ///<summary>This class implementation doesn't do anything and returns eNotImplemented if it is not overloaded in
  ///the child class.</summary>
  virtual Acm::ErrorStatus cInit();
  void initToEditOriginal() const override;
  void initToEdit() const override;
  ///<summary>Sets the factory default values.</summary>
  virtual Adesk::Boolean setFactoryDefaults();
  virtual void setDefaultSubSymbol(AcmCSubWelding* pData) const;
  virtual Adesk::Boolean   initPost(AcmCWeld* pWeld) const;
  Acm::ErrorStatus getSuggestedFinished(std::vector<AcString>& descList,
                                        std::vector<AcString>* pKeywordList = nullptr) const override;
  virtual Acm::ErrorStatus checkVisibility(AcmCSubWelding* pData) const;
  virtual Adesk::Boolean getWelds(const AcmCSubWelding *pSubWeld,
                                  Acm::WeldLocationFilter filter,
                                  AcmCObjArray<AcmCSymbolDesc>& list) const;
  virtual void getSubEnts(const AcmCSubWelding* pSubSym,
                          AcmCAuxEntArray& subents,
                          AcGePoint3d& ptRefEnd) const;
  virtual void setDefaultISOSettings();
  virtual void getWeldProcessPrefix(CString& bufStr) const;

  ///<summary>Returns all supported insertion types of welding processes.</summary>
  virtual UINT getProcessInsertTypes() const;
  ///<summary>Returns all supported types of welding processes</summary>
  virtual UINT getProcessTypes() const;

  Adesk::UInt64 getDistanceBitmap(Acm::WeldingDistanceType var) const override;
protected:
  virtual Acm::ErrorStatus createDefaultLTypeIdentLine(const ACHAR* name);
};                      

//////////////////////////////////////////////////////////////////////
///<summary>This is class AcmWeldingStdJIS2016.</summary>
//////////////////////////////////////////////////////////////////////
class STDIMP_DLLSHARE AcmWeldingStdJIS2016 : public AcmWeldingStdJIS
{
public:
    ACRX_DECLARE_MEMBERS(AcmWeldingStdJIS2016);

    AcmWeldingStdJIS2016() = default;
    virtual ~AcmWeldingStdJIS2016() = default;

    Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const override;
    Adesk::Boolean setFactoryDefaults() override;
    Acm::ErrorStatus cInit() override;
    void initToEditOriginal() const override;
    void initToEdit() const override;

    Adesk::Boolean initPost(AcmCWeld* pWeld) const override;
    Adesk::Boolean isMultipleSymbolsAllowed() const override;
    void setDefaultSubSymbol(AcmCSubWelding* pSubWeld) const override;
    Adesk::Boolean isDistancePaletteAllowed() const override;
    Adesk::Boolean isGapRowEnableWithIndentLine() const override;
    void allowedStaggerType(const AcmCSubWelding* pWelding, Adesk::UInt32& value) const override;
    Acm::ErrorStatus checkVisibility(AcmCSubWelding* pData) const override;
    std::vector<Adesk::UInt16> getAllowedDistanceTypes() const override;
    Acm::ErrorStatus getSuggestedFinished(std::vector<AcString>& descList,
                                          std::vector<AcString>* pKeywordList = nullptr) const override;

    void getSubEnts(const AcmCSubWelding* pSubSym,
        AcmCAuxEntArray& subents,
        AcGePoint3d& ptRefEnd) const override;

    Adesk::Boolean allowedOperation() const override
    {
        return  Adesk::kTrue;
    };
    Adesk::Boolean allowedSpacer() const override
    {
        return  Adesk::kTrue;
    };
protected:
    Adesk::Boolean ShownBackingWeldInSymbPalette() const override;
};

//////////////////////////////////////////////////////////////////////
///<summary>This is class AcmDatumStdJIS.</summary>
class STDIMP_DLLSHARE AcmDatumStdJIS : public AcmDatumStdISO
{
public:
  ACRX_DECLARE_MEMBERS(AcmDatumStdJIS);
  AcmDatumStdJIS();
  virtual ~AcmDatumStdJIS();
  ///<summary>Gets the information about the standard name and revision.</summary>
  virtual Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const;
  ///<summary>Provides the basic interface for the AcmStandardManager and hence determines whether AcmSymbolSTD
  ///can be used for a particular standard.</summary>
  virtual Adesk::Boolean   isCompatibleTo(const AcmStandard* pStd) const;
  ///<summary>Sets the factory default values.</summary>
  virtual Adesk::Boolean setFactoryDefaults();
};                      

///<summary>This is class AcmIdStdJIS.</summary>
class STDIMP_DLLSHARE AcmIdStdJIS : public AcmIdStd
{
public:
  ACRX_DECLARE_MEMBERS(AcmIdStdJIS);
  AcmIdStdJIS();
  virtual ~AcmIdStdJIS();
  ///<summary>Gets the information about the standard name and revision.</summary>
  virtual Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const;
  ///<summary>Provides the basic interface for the AcmStandardManager and hence determines whether AcmSymbolSTD 
  ///can be used for a particular standard.</summary>
  virtual Adesk::Boolean   isCompatibleTo(const AcmStandard* pStd) const;
  ///<summary>Selects all supported arrowhead services available for use for the datum standard and returns a list
  ///of their descriptor objects.</summary>
  Adesk::Boolean getDatumArrowDesc(AcmCObjArray<AcmCArrowDesc>& list, Adesk::Boolean bDarkTheme = Adesk::kFalse) const override;
  ///<summary>Since the Datum Id uses a different arrowheads than other symbols, this member function specifies
  ///which one.</summary>
  virtual Acm::ArrowType defaultArrowType() const;
};

///<summary>This is class AcmIdStdJIS1998, which implments *JIS B 0021:1998* revision.</summary>
class STDIMP_DLLSHARE AcmIdStdJIS1998 : public AcmIdStdJIS
{
public:
  ACRX_DECLARE_MEMBERS(AcmIdStdJIS1998);
  AcmIdStdJIS1998();
  virtual ~AcmIdStdJIS1998();
  ///<summary>Sets factory default values for surface indication leader properties.</summary>
  virtual Adesk::Boolean setSurfIndLeaderFactoryDefaults();
  ///<summary>Gets the information about the standard name and revision.</summary>
  virtual Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const;
  ///<summary>Check the visibility of symbol variables. The "visiblity" always means certain properties are supported 
  ///by various master standards, or standard revisions.</summary>
  virtual Acm::ErrorStatus checkVisibility(AcmCId* pData) const;
  ///<summary>Gets the status for the feature id and datum Id symbols.</summary>
  virtual Adesk::Boolean isSupportedType(Acm::SubSymbolType type) const;
  ///<summary>Returns whether surface indication leader is supported or not.</summary>
  virtual Adesk::Boolean isSurfIndLeaderSupported(Acm::SubSymbolType type) const;
};

///<summary>This is class AcmCPartListStdJIS.</summary>
class STDIMP_DLLSHARE AcmCPartListStdJIS : public AcmCPartListStd
{
public:
  AcmCPartListStdJIS(AcmBOMStd *std);
  virtual ~AcmCPartListStdJIS();
  ///<summary>This member function will forward the call to the parts list standard and balloon standard objects, 
  ///if they are defined.</summary>
  virtual Adesk::Boolean setFactoryDefaults();
  ///<summary>This member function is implemented for the AcmSymbolStd interface. It is necessary to be able to
  ///properly edit the standard.</summary>
  virtual Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const;
};


///<summary>This is class AcmCBalloonStdJIS.</summary>
class STDIMP_DLLSHARE AcmCBalloonStdJIS : public AcmCBalloonStd
{
public:
  AcmCBalloonStdJIS(AcmBOMStd *std);
  virtual ~AcmCBalloonStdJIS();
  ///<summary>This member function will forward the call to the parts list standard and balloon standard objects, if
  ///they are defined.</summary>
  virtual Adesk::Boolean setFactoryDefaults();
  virtual Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const;
  ///<summary>You may overload this method in their classes to initialize the balloon standard.</summary>
  virtual Acm::ErrorStatus cInit();
};

///<summary>The AcmBOMStdJIS class is a derived class of the AcmBOMStd class. The usage of AcmBOMStdJIS class is 
///the same as that of AcmBOMStd class.</summary>
class STDIMP_DLLSHARE AcmBOMStdJIS : public AcmBOMStd
{
public:
  ACRX_DECLARE_MEMBERS(AcmBOMStdJIS);
  ///<summary>the construct function.</summary>
  AcmBOMStdJIS();
  ///<summary>the destruct function.</summary>
  virtual ~AcmBOMStdJIS();
  ///<summary>You may overload this method in their classes to initialize the BOM standard with their own parts
  ///list standard balloon standards.</summary>
  virtual Acm::ErrorStatus cInit();
  ///<summary>This member function will forward the call to the parts list standard and balloon standard objects, if
  ///they are defined.</summary>
  virtual Adesk::Boolean setFactoryDefaults();
  ///<summary>This member function is implemented for the AcmSymbolStd interface. It is necessary to be able to
  ///properly edit the standard.</summary>
  virtual Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const;
  ///<summary>Provides the basic interface for the AcmStandardManager and hence determines whether AcmSymbolSTD
  ///can be used for a particular standard.</summary>
  virtual Adesk::Boolean   isCompatibleTo(const AcmStandard* pStd) const;
};

#endif // STDJIS
