diff usr/src/cmd/man/src/util/nsgmls.src/include/OpenElement.h @ 0:c9caec207d52 b86

Initial porting based on b86
author Koji Uno <koji.uno@sun.com>
date Tue, 02 Jun 2009 18:56:50 +0900
parents
children 1a15d5aaf794
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/cmd/man/src/util/nsgmls.src/include/OpenElement.h	Tue Jun 02 18:56:50 2009 +0900
@@ -0,0 +1,210 @@
+// Copyright (c) 1994 James Clark
+// See the file COPYING for copying permission.
+#pragma ident	"@(#)OpenElement.h	1.4	00/07/17 SMI"
+
+#ifndef OpenElement_INCLUDED
+#define OpenElement_INCLUDED 1
+#ifdef __GNUG__
+#pragma interface
+#endif
+
+#include "Boolean.h"
+#include "ContentToken.h"
+#include "ElementType.h"
+#include "Link.h"
+#include "Mode.h"
+#include "Allocator.h"
+#include "Location.h"
+
+#ifdef SP_NAMESPACE
+namespace SP_NAMESPACE {
+#endif
+
+class SP_API OpenElement : public Link {
+public:
+  void *operator new(size_t sz, Allocator &alloc) { return alloc.alloc(sz); }
+  void *operator new(size_t sz) { return Allocator::allocSimple(sz); }
+  void operator delete(void *p) { Allocator::free(p); }
+  OpenElement(const ElementType *, Boolean net, Boolean included,
+	      const ShortReferenceMap *currentMap,
+	      const Location &startLocation);
+  Boolean isFinished() const;
+  Boolean tryTransition(const ElementType *);
+  const LeafContentToken *invalidExclusion(const ElementType *) const;
+  // This doesn't handle declared content of EMPTY.
+  // If this situation can arise must use declaredEmpty().
+  Boolean tryTransitionPcdata();
+  const LeafContentToken *impliedStartTag() const;
+  void doRequiredTransition();
+  const ElementType *type() const;
+  Boolean netEnabling() const;
+  Boolean included() const;
+  const MatchState &matchState() const;
+  void setMatchState(const MatchState &);
+  Mode mode(Boolean netEnabled) const;
+  const ShortReferenceMap *map() const;
+  void setMap(const ShortReferenceMap *);
+  Boolean requiresSpecialParse() const;
+  const Location &startLocation() const;
+  const LeafContentToken *currentPosition() const;
+  Boolean declaredEmpty() const;
+  void setConref();
+  unsigned long index() const;
+  void setIndex(unsigned long);
+private:
+  OpenElement(const OpenElement &); // undefined
+  void operator=(const OpenElement &); // undefined
+  const ElementType *elementType_;
+  PackedBoolean netEnabling_;		// start-tag was net-enabling
+  PackedBoolean included_;
+  MatchState matchState_;
+  ElementDefinition::DeclaredContent declaredContent_;
+  const ShortReferenceMap *map_;
+  Location startLocation_;
+  unsigned long index_;
+};
+
+inline
+const ElementType *OpenElement::type() const
+{
+  return elementType_;
+}
+
+inline 
+Boolean OpenElement::netEnabling() const
+{
+  return netEnabling_;
+}
+
+inline
+Boolean OpenElement::included() const
+{
+  return included_;
+}
+
+inline
+const MatchState &OpenElement::matchState() const
+{
+  return matchState_;
+}
+
+inline
+void OpenElement::setMatchState(const MatchState &state)
+{
+  matchState_ = state;
+}
+
+inline
+Boolean OpenElement::isFinished() const
+{
+  return (declaredContent_ != ElementDefinition::modelGroup
+	  || matchState_.isFinished());
+}
+  
+inline
+Boolean OpenElement::tryTransition(const ElementType *e)
+{
+  return (declaredContent_ == ElementDefinition::modelGroup
+	  ? matchState_.tryTransition(e)
+	  : (declaredContent_ == ElementDefinition::any));
+}
+
+inline
+Boolean OpenElement::tryTransitionPcdata()
+{
+  return (declaredContent_ == ElementDefinition::modelGroup
+	  ? matchState_.tryTransitionPcdata()
+	  : 1);			// CDATA, RCDATA, ANY all ok
+}
+
+inline
+const LeafContentToken *OpenElement::invalidExclusion(const ElementType *e)
+     const
+{
+  return (declaredContent_ == ElementDefinition::modelGroup
+	  ? matchState_.invalidExclusion(e)
+	  : 0);
+}
+
+inline
+void OpenElement::doRequiredTransition()
+{
+  matchState_.doRequiredTransition();
+}
+
+inline
+const LeafContentToken *OpenElement::impliedStartTag() const
+{
+  return (declaredContent_ == ElementDefinition::modelGroup
+	  ? matchState_.impliedStartTag()
+	  : 0);
+}
+
+inline
+const ShortReferenceMap *OpenElement::map() const
+{
+  return map_;
+}
+
+inline
+void OpenElement::setMap(const ShortReferenceMap *map)
+{
+  map_ = map;
+}
+
+inline
+Boolean OpenElement::requiresSpecialParse() const
+{
+  return (declaredContent_ == ElementDefinition::cdata
+	  || declaredContent_ == ElementDefinition::rcdata);
+}
+
+inline
+Mode OpenElement::mode(Boolean netEnabled) const
+{
+  return elementType_->definition()->mode(netEnabled);
+}
+
+inline
+const Location &OpenElement::startLocation() const
+{
+  return startLocation_;
+}
+
+inline
+const LeafContentToken *OpenElement::currentPosition() const
+{
+  return (declaredContent_ == ElementDefinition::modelGroup
+	  ? matchState_.currentPosition()
+	  : 0);
+}
+
+inline
+Boolean OpenElement::declaredEmpty() const
+{
+  return declaredContent_ == ElementDefinition::empty;
+}
+
+inline
+void OpenElement::setConref()
+{
+  declaredContent_ = ElementDefinition::empty;
+}
+
+inline
+unsigned long OpenElement::index() const
+{
+  return index_;
+}
+
+inline
+void OpenElement::setIndex(unsigned long index)
+{
+  index_ = index;
+}
+
+#ifdef SP_NAMESPACE
+}
+#endif
+
+#endif /* not OpenElement_INCLUDED */